我和RenderPage一起出现Html.BeginForm的问题(不知道我做错了什么)。
假设您有一个简单的_Test.cshtml,例如:
@{
<span>Test Text</span>
}
然后假设您有一个这样的简单页面(使用_Test.cshtml):
@{
Layout = null;
var b = new int[] { 0, 1, 2, 3, 4 };
}
@{
<html>
<body>
@* @RenderPage("~/Views/Shared/_Test.cshtml") *@
<div>
@foreach (int i in b)
{
<div>
@using (Html.BeginForm("Action", "Controller", new { id = i }, FormMethod.Post, new { id = "frm_"+ i.ToString() }))
{
<span>Label </span>
<input type="submit" id="@i.ToString()" value="@i.ToString()" />
}
</div>
}
</div>
</body>
</html>
}
如果您注释掉RenderPage帮助程序调用,则会使用相应的提交按钮正确获取一系列表单。如果取消注释RenderPage助手,则不会生成任何标记。不知道发生了什么事,有人可以帮助我吗?
答案 0 :(得分:2)
为什么使用RenderPage? Html.Partial
似乎更原生:
@{
Layout = null;
var b = new int[] { 0, 1, 2, 3, 4 };
}
<html>
<body>
@Html.Partial("~/Views/Shared/_Test.cshtml")
<div>
@foreach (int i in b)
{
<div>
@using (Html.BeginForm("Action", "Controller", new { id = i }, FormMethod.Post, new { id = "frm_"+ i.ToString() }))
{
<span>Label </span>
<input type="submit" id="@i.ToString()" value="@i.ToString()" />
}
</div>
}
</div>
</body>
</html>
以及您的部分(当您拥有静态HTML时,不需要那些服务器端块@{}
):
<span>Test Text</span>
答案 1 :(得分:1)
答案 2 :(得分:0)
尝试将_Test.cshtml更改为
<span>Test Text</span>
这可能是品味问题,但我更喜欢Html.Partial
到RenderPage
。