在我问我的问题之前,请让我说我在线看,我看到这个问题的堆栈溢出,DID找到了某些解决方案,但没有找到我的工作。所以我在这里要求希望得到这个问题的答案,并感谢任何帮助。
我正在向外部网站发帖子。在我的模型中,我通过在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的名称。
我的问题是我的表单中的一个名称值必须是&#34; bb-post&#34;。我显然无法在我的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" })
感谢。
答案 0 :(得分:1)
做什么错误
<input id="bb-post" name="bb-post" type="hidden" value="@model.bb_post" />
答案 1 :(得分:0)
我刚刚尝试了以下内容:
@Html.HiddenFor(x => x.Client, new {id="bb-post", @Name = "bb-post"})
得到了这个结果
<input name="bb-post" id="bb-post" type="hidden" value="BDOObject.Client">
因此,如果您使用大写'N'和id设置@Name,它就可以工作..如果我没有设置id,则它需要原始值bb_post作为id ...但是@Name只有大写N工作......
修改强> 显然它似乎只是起作用,因为Chrome清理了html。但根据this answer by nemesv,你最好在@ Html.Hiddenfor上使用@ Html.Hidden,就像这样:
@Html.Hidden("bb-post", Model.bb_post, new { id="bb-post"})
因为Html.Hiddenfor试图从你的模型中划分name属性,这使得它与Html.Hidden不同