将字符串模型传递回控制器(MVC表单)

时间:2017-05-18 20:59:15

标签: c# asp.net-mvc asp.net-mvc-5 asp.net-mvc-views

我到处寻找这个问题的答案,也许我不走运。这是一件非常简单的事情,但我宁愿从这里开始,以防它花费的时间超过预期。

所以我有最简单的观点。

@model System.String

@using (Html.BeginForm("AdminDeletePost", "Home", FormMethod.Post))
{
    @Html.HiddenFor(m => m)

    <h3>Are you sure you want to delete the following user?</h3>    
    <br />    
    <h4>@Model</h4>    
    <br />    
    <h6>To confirm deletion, click <i>Save</i>.</h6>
    <h6>To cancel, click <i>Cancel</i>.</h6>
}

我想要做的就是将Model(这是一个字符串)的值传递回Home控制器中的AdminDeletePost操作。所以它的布局就像我的典型形式之一。虽然它很简单,但我无法让它发挥作用。我应该补充一点,上面的<h4>@Model</h4>确实显示了正确的值。模型的值不为null。我假设HiddenHelper方法正在将某种元数据传递给InputHelper方法,其中一项是Name参数。但是,字符串不是我可以像普通模型一样注释的东西。也许我以错误的方式看待这件事。

我已经可以猜测有人会建议不要走这条路线,因为它简单(即不发布整个表格而是发布个别字符串)。但是,由于应用程序的布局,并保持我的所有表单之间的一致性,这是目前的理想设置。

这是堆栈......

enter image description here

以前是否有其他人有过相对类似的问题?

1 个答案:

答案 0 :(得分:2)

这些帮助者只能获取模型的属性;不是整个模型。

否则,它无法确定输入应该具有的名称。

您应该切换到具有一个字符串属性的视图模型对象(推荐),或者使用适当的名称和值自己编写<input type="hidden">

无论哪种方式,名称必须与您的操作的参数名称匹配,才能使请求绑定生效。