将额外数据传递给帖子控制器 - MVC

时间:2012-12-23 07:17:13

标签: asp.net-mvc-4 model-binding

假设我有模型

public class ViewModel 
{
    [Required]
    [Display(Name = "Email address")]
    public string Email { get; set; }

    public string ExtraData{ get; set; }
}

ExtraData只是在GET操作中添加的一些额外文本:

    [HttpGet] 
    public ActionResult ActionMethod()
    {
        ViewModel modelWithExtraData= new ViewModel{ ExtraData = "Some extra data." };
        return PartialView("MyView", modelWithExtraData);
    }

并在视图中呈现:

<form>
    @Html.TextBoxFor(m => m.Email)
    <div>@Model.ExtraData</div>
<form>

当这个表格被发布到控制器时,我希望额外的数据“一些额外的数据”保持不变并与模型一起发布,但这不会发生。

    [HttpPost]
    public ActionResult ActionMethod(ViewModel model)
    {
        //model.ExtraData = null ... Not good
    }

我查看了所有的@Html辅助方法,但似乎找不到合适的方法只显示文本(不可编辑)并将其发回。

1 个答案:

答案 0 :(得分:4)

您可以将额外数据作为隐藏字段包含在表单内以及文本框中:

<form>
    @Html.TextBoxFor(m => m.Email)
    @Html.HiddenFor(m => m.ExtraData)
    <div>@Model.ExtraData</div>
<form>