【问题标题】:Pass string model back to controller (MVC Form)将字符串模型传回控制器(MVC 表单)
【发布时间】:2017-05-18 20:59:14
【问题描述】:

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

所以我有最简单的视图。

@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 操作。所以它的布局就像我的典型形式之一。现在它很简单,但我无法让它工作。我应该补充一点,上面的&lt;h4&gt;@Model&lt;/h4&gt; 确实显示了正确的值。模型的值不为空。我假设HiddenHelper 方法将某种元数据传递给InputHelper 方法,其中一项是Name 参数。但是,字符串不是我可以像普通模型那样注释的东西。也许我看错了。

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

这是堆栈...

之前有没有其他人遇到过类似的问题?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢,你解释得很好。
    • @slaks 解释得真好,先生,你把技术要点讲得很清楚
    猜你喜欢
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    相关资源
    最近更新 更多