sakir
sakir

Reputation: 3502

mvc pass tuple data as parameter

I have a tuble like this as model.

@model   Tuple<Urun,List<UrunKatagori>>

inside the view I need to pass those data to controler.

here is the my button.

 Html.X().Button().Text("Guncelle").Icon(Icon.PageSave)
       .DirectEvents(de =>
       {
           de.Click.Url = "Urunler/Guncelle";
        de.Click.ExtraParams.Add(new Parameter { Name = "Urun", Value ="Model.Item1", Mode = ParameterMode.Raw });//Iguess here is wrong
       })

and my controller

[HttpPost]
public  ActionResult Guncelle (Urun  Urun){

    Urun_BLL urun_bll = new Urun_BLL();

  //  urun_bll.Update(mdl);
    X.Msg.Notify(new NotificationConfig
    {
        Icon = Icon.Accept,
        Title = "Working",
        Html =Urun.Ad.ToString()//I need to get data here
    }).Show();


    return this.Direct();
}

Upvotes: 0

Views: 2722

Answers (1)

Jason Evans
Jason Evans

Reputation: 29186

I strongly suggest that you create a viewmodel class, rather then passing a Tuple e.g.

public class GuncelleViewModel
{
    public Urun Urun { get ;set; }
    public List<UrunKatagori>> UrunKatagori { get; set; }
}

Then you can pass that to the view like so:

[HttpPost]
public  ActionResult Guncelle (Urun  Urun)
{
    Urun_BLL urun_bll = new Urun_BLL();

  //  urun_bll.Update(mdl);
    X.Msg.Notify(new NotificationConfig
    {
        Icon = Icon.Accept,
        Title = "Working",
        Html =Urun.Ad.ToString()//I need to get data here
    }).Show();

    var viewModel = new GuncelleViewModel()
    viewModel.Urun = Urun;
    viewModel.UrunKatagori = // TODO - However you get the categories.

    return View(viewModel);
    // this.Direct(); What does this.Direct() do? Replace it with calling the view instead, much        cleaner.
}

In the view, use the following model

@model GuncelleViewModel

Useing a viewmodel class, which is associated one-to-one with a view file (*.cshtml), is a very good practise. It can help keep your design clean and more flexible, rather then passing specific data types, such as Tuple.

Upvotes: 1

Related Questions