从数据到控制器并将其传递给表单

时间:2013-10-17 08:19:24

标签: asp.net-mvc asp.net-mvc-4 webforms

我正在迈出mvc的第一步,我需要帮助。 我将数据从视图传递到此控制器,我需要将所选项目与详细信息传递到不同的视图(这是用户添加其电子邮件详细信息的表单),我无法弄清楚如何。 这就是我从提交的表单中获取控制器的详细信息

    public ActionResult list()
    {
        var AllItems = db.menu.ToList();
        Mapper.CreateMap<Menu, SelectableMenu>();

        return View(AllItems.Select(m => new SelectableMenu { price = m.price, MenuId = m.MenuId, Name = m.Name })
        .ToList());
    }


    [HttpPost]
    public ActionResult List(IEnumerable<SelectableMenu> item)
    {
        var userSelectedMenu = item.Where(m => m.IsSelected).Select(m => m.Name + m.price + m.MenuId);
        if (userSelectedMenu != null && userSelectedMenu.Any())
        {
            return View("bla");
        }

        return View();
    }

3 个答案:

答案 0 :(得分:1)

使用方法ReditectToActionstring actionName, string controllerName, Object routeValues)

有关详细信息,请访问:http://msdn.microsoft.com/en-us/library/dd460311(v=vs.108).aspx

答案 1 :(得分:0)

您可以使用return View("ViewName",model)

返回不同的视图

例如:

[HttpPost]
public ActionResult List(IEnumerable<SelectableMenu> item)
{
    var userSelectedMenu = item.Where(m => m.IsSelected).Select(m => m.Name + m.price + m.MenuId);
    if (userSelectedMenu != null && userSelectedMenu.Any())
    {
        return View("YourDiffrentViewName",userSelectedMenu); // This will pass your model to your Different view
    }

    return View();
}

然后在新视图中,您必须使用您的模型强力输入它。

例如:

您的观点如下:

@model ProjectName.models.YourClassName //Your class/model namespace

 @using(Html.BeginForm())
 {
       @Html.TextBoxFor(m => Model.Property) //This will create textbox for your property
<input type="submit" value="Submit" /> 
}

有关stronly类型视图的更多信息,请访问:

  1. http://www.c-sharpcorner.com/UploadFile/abhikumarvatsa/strongly-typed-views-in-mvc/

  2. http://www.howmvcworks.net/OnViews/BuildingAStronglyTypedView

答案 2 :(得分:0)

你需要两步才能获得这个

第1步

制作模型(更有效)在视图中使用它以通过提交表单的帖子将数据传递给控制器​​。

第2步

将数据接收到控制器方法然后使用
  控制器操作中的return View("yourNewpage","yourdatamodelobject");,用于在另一个页面的操作结果视图中传递数据。

或者,如果视图位于另一个控制器

然后你可以在post action方法中接收数据并使用Return RedirectToAction("ActionName", "ControllerName", "DataModelObject")传递给不同的控制器