在我问我的问题之前,让我声明我确实在网上查看过,我确实查看过这个问题的堆栈溢出,并且确实找到了某些解决方案,但我发现的没有一个对我有用。所以我在这里问希望能得到这个问题的答案,并感谢所提供的任何帮助。
我正在向外部网站发送表单。在我的模型中,我通过在我的 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)
}
当我检查 fiddler 时,它会在幕后执行以下操作:
<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" })
但这没有用,当我检查 fiddler 时它做了以下事情:
<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" })
谢谢。
最佳答案
做错了什么
<input id="bb-post" name="bb-post" type="hidden" value="@model.bb_post" />
关于html - BeginForm 更改 "Name"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32611632/