【问题标题】:Passing extra data to a post controller - MVC将额外数据传递给后控制器 - MVC
【发布时间】:2012-12-23 07:17:13
【问题描述】:

假设我有模型

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 辅助方法,但似乎找不到合适的方法来简单地显示文本(不可编辑)并将其发回。

【问题讨论】:

  • 我想知道为什么一个完全有效的问题会被否决。也许投反对票的人可以解释他的理由。

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


【解决方案1】:

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

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

【讨论】:

  • 啊,好吧,我感觉这与一些隐藏的诡计有关。谢谢
猜你喜欢
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多