使用ActionLink将模型传递给控制器

时间:2015-11-11 07:21:40

标签: asp.net-mvc-4

两种简单的方法,即创建一个新包"创建"被称为编辑包"编辑"方法被调用。此方法调用" GetPackDetail"获取包相关信息。编辑方法获取包信息并将其分配给模型并打开"编辑"页。

在编辑视图页面中,我试图将整个模型传递给"创建"区域控制器的方法。它工作正常,我在"编辑视图"中获得该方法的所有信息。页面在编辑模式下打开。但我在" Name"当用户通过调用pack controller中的Create方法单击以创建新包时,然后输入pack的名称,然后单击actionlink将该模型传递给区域控制器。似乎对模型所做的更改没有反映出来。

Pack Controller Snippet

    public ActionResult Create()
    {
        iSPYPack model = new iSPYPack();

        return View("Edit", model);
    }

    public ActionResult Edit(int Id)
    {
        var model = GetPackDetail(Id);            

        return View("Edit", model);
    }

修改视图

@model iSPYCMS.Models.iSPYPack

@using (Html.BeginForm())
{  

  @Html.LabelFor(x => x.Name)
  @Html.TextBoxFor(x => x.Name)                                                

}          

 @Html.ActionLink("Create Area","Create","Area", Model, new { @class="btn btn-success"})

iSPYPack模型

 public class iSPYPack
 {        
    public int Id { get; set; }

    [Required(ErrorMessage = "Pack Name is required")]
    [Display(Name = "Pack Name")]
    public string Name { get; set; 
 }    

区域控制器

    public ActionResult Create(iSPYPack Model)
    {

        var ispypackMode = Model;

        iSPYArea model = new iSPYArea();

        return View("Create", model);
    }

1 个答案:

答案 0 :(得分:0)

将表单发布到下面的代码。请更换控制器名称。而不是动作链接,你会注意到我使用了元素。但是为你保留你的引导课程。只是让你知道,你结合了两种发布方式。您应该使用一种或另一种方法。如果您需要进一步的帮助,请告诉我

@model iSPYCMS.Models.iSPYPack

@using (Html.BeginForm("Create", "ControllerNameOfCreateMethod", FormMethod.Post))
{  

  @Html.LabelFor(x => x.Name)
  @Html.TextBoxFor(x => x.Name)      

<input type="submit" value="Create New Pack" class="btn btn-success"/>                                        

}          

但是,如果您的要求需要操作链接,那么这将有所帮助。

@Html.ActionLink("Create  New Pack", "Create", "ControllerOfCreateMethod", new { area = "Admin", Name = Model.Name }, new { htmlAttributes = new { @class = "btn btn-success" } })