在我问我的问题之前,让我说我DID看起来在线,并且我为这个问题寻找堆栈溢出,DID找到某些解决方案,但没有找到我找到的工作。所以我在这里问希望得到这个问题的答案,并感谢任何帮助。BeginForm更改“名称”值
我正在做一个表单发布到外部网站。在我的模型我在我的LoginViewModel执行以下操作创建的所有值:
public string returnurl { get; set; }
在我的构造函数中我设置需要像这样的价值观:
returnurl = "www.retururl.com";
在我的索引我页面后像所以用MVC 4.0剃刀:
@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和名称变量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" })
谢谢。
可能重复的[ASP.NET MVC 4重写发射的html名称和id](http://stackoverflow.com/questions/14810100/asp-net-mvc-4-override-emitted-html-名称和编号) – James
你不需要在设置名称时使用@只需使用'new {Name =“bb-post”})' – JamieD77
问题中接受的答案实际上是错误的,我在尝试后意外跳过了它它并没有工作。下面的答案尽管@James工作,我编辑我的问题提供的信息。 – Fro1