向 post 控制器传递额外数据 - MVC

3
假设我有这个模型:
public class ViewModel 
{
    [Required]
    [Display(Name = "Email address")]
    public string Email { get; set; }

    public string ExtraData{ get; set; }
}

在GET操作中,ExtraData是一些额外的文本,只是简单地添加在其中:

    [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>

当提交此表单到控制器时,我希望额外数据“Some extra data”保持完整,并随模型一起提交,但实际上并未发生这种情况。
    [HttpPost]
    public ActionResult ActionMethod(ViewModel model)
    {
        //model.ExtraData = null ... Not good
    }

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

2
我想知道为什么一个完全合理的问题会被踩。也许踩者可以解释一下他的原因。 - Darin Dimitrov
1个回答

4
您可以将额外数据作为隐藏字段与文本框一起放入表单中:
<form>
    @Html.TextBoxFor(m => m.Email)
    @Html.HiddenFor(m => m.ExtraData)
    <div>@Model.ExtraData</div>
<form>

啊,好的,我有一种感觉它与某些隐藏的诡计有关。谢谢。 - parliament

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接