【发布时间】:2015-09-16 14:35:15
【问题描述】:
在我问我的问题之前,让我声明我确实在网上查看过,我确实查看了这个问题的堆栈溢出,并且确实找到了某些解决方案,但我发现没有一个对我有用。所以我在这里问希望能得到这个问题的答案,并感谢提供的任何帮助。
我正在向外部网站发布表单。在我的模型中,我通过在 LoginViewModel 中执行以下操作来创建所有值:
public string returnurl { get; set; }
在我的构造函数中,我设置了所需的值,如下所示:
returnurl = "www.retururl.com";
在我的索引页面中,我使用 MVC 4.0 中的 Razor 来发帖:
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "myForm", @action = Model.loginUrl }))
{
@Html.HiddenFor(model => model.returnurl)
}
当我检查提琴手时,它会在幕后执行以下操作:
<input id="returnurl" name="returnurl" type="hidden" value="www.returnurl.com">
它使输入 id 和 name 成为变量 returnurl 的名称。
我的问题是我的表单帖子中的名称值之一必须是“bb-post”。我显然无法在我的 loginViewModel 中命名变量 bb-post,所以我尝试的只是将名称设置为 bb_post 之类的名称,然后在我的索引页面中。
所以我做了以下事情:
@Html.HiddenFor(model => model.bb_post, new { name = "bb-post" })
但这不起作用,当我检查提琴手时,它做了以下事情:
<input id="bb_post" name="bb_post" type="hidden" value="" />
我也试过这个:
@Html.HiddenFor(model => model.bb_post, new { @name = "bb-post" })
但是得到了这个:
<input id="bb_post" name="bb_post" type="hidden" value="" />
最后试了一下:
@Html.HiddenFor(model => model.bb_post, new { @Name = "bb-post" })
但是得到了这个:
<input Name="bb-post" id="bb_post" name="bb_post" Name="bb-post" type="hidden" value="" />
使用大写名称 @Name 给了我两个名称值。这不是我要找的。
我确实意识到我可以直接将它写到 html 中:
<input id="bb_post" name="bb-post" type="hidden" value="" />
但为了保持它看起来一样,我希望有一种方法可以保持这种格式:
@Html.HiddenFor(model => model.bb_post, new { @Name = "bb-post" })
谢谢。
编辑: 我确实在推荐的问题中找到了答案,但接受的答案不正确。我一定没有错误地比接受的答案看得更远(我通常会这样做并道歉)。但是,如果其他人不小心跳过了这个答案,因为接受的答案是错误的,因为它会生成两个名称值,那么以下是有效的。 这是正确的答案,对我有用:
@Html.Hidden("bb-post", Model.bb_post, new { id="bb-post" })
谢谢。
【问题讨论】:
-
设置名称时不需要@ .. 只需使用
new { Name = "bb-post" }) -
问题中接受的答案实际上是错误的,我在尝试但不工作后不小心跳过了它。虽然@James 下面的答案确实有效,但我编辑了我的问题以提供该信息。
标签: html asp.net-mvc asp.net-mvc-4 razor html.beginform