.NET MVC : Calling RedirectToAction passing a model?

后端 未结 4 1811
耶瑟儿~
耶瑟儿~ 2020-12-03 04:20

I got a view List.aspx that is bound to the class Kindergarten

In the controller:

public ActionResult List(int Id)
{
  Kind         


        
相关标签:
4条回答
  • 2020-12-03 05:04

    I'm not sure you want to call RedirectToAction because that will just cause k to be set again.

    I think you want to call View and pass in the name of the view and your model.

    return View("List", k);
    
    0 讨论(0)
  • 2020-12-03 05:05

    As Brandon said, you probably want to use return View("List", Id) instead, but the problem you're having is that you're passing k, your model, to a method that accepts an int as its parameter.

    Think of RedirectToAction as a method call.

    0 讨论(0)
  • 2020-12-03 05:09

    I don't believe ModelBinding exists when using RedirectToAction. Your best options, however, is to use the TempData collection to store the object, and retrieve it in the following action.

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Add(...)
    {
      //...
      Kindergarten k = ...
      TempData["KG"] = k;
      return RedirectToAction("List");
    }
    

    In your List Action

    public ActionResult List()
    {
    
       Kindergarten k = (Kindergarten)TempData["KG"];
       // I assume you need to do some stuff here with the object, 
       // otherwise this action would be a waste as you can do this in the Add Action
      return View(k);
    }
    

    Note: TempData collection only holds object for a single subsequent redirect. Once you make any redirect from Add, TempData["KG"] will be null (unless you repopulate it)

    0 讨论(0)
  • 2020-12-03 05:23

    I think you just need to call view like

    return RedirectToAction("List", new {id});

    with id you need to populate the Kindergarten.

    0 讨论(0)
提交回复
热议问题