在MVC3项目中,我使用Html.BeginForm发布一些(模型)值。除了那些我想发送一个额外的参数,该参数不是表单(模型)的一部分,而是在ViewBag中。现在,当我使用Button(代码在这里回答:MVC3 razor Error in creating HtmlButtonExtension)时,所有表单值都被发布但额外参数保持为null。当我使用ActionLink时,参数已发布但表单值不是:)任何知道如何将两者结合起来?谢谢!
@Html.Button("Generate!", new { id = ViewBag.ProjectID })
@Html.ActionLink("Generate!", "Post", new { id = @ViewBag.ProjectID })
答案 0 :(得分:2)
我的建议是在你的App.Domain.Model中声明一个新的对象
namespace App.Domain.Model
{
public class CustomEntity
{
public Project projectEntity { get; set; }
public int variableUsed { get; set; }
}
}
在您的视图中,您可以使用CustomEntity.projectEntity和CustomEntity.variableUsed轻松访问它们。
希望有所帮助
答案 1 :(得分:0)
您可以执行以下操作。
查看代码
@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, new { @id = "frmId", @name = "frmId" }))
{
@*You have to define input as a type button not as a sumit. you also need to define hidden variable for the extra value.*@
<input type="hidden" name="hndExtraParameter" id="hndExtraParameter" />
<input value="Submit" type="button" id="btnSubmit" onclick="UpdateHiddenValue()" />
}
<script type="text/javascript">
function ValidateUser() {
$("#hndExtraParameter").val('Assignvaluehere');
$("#frmId").submit();
}
</script>
控制器代码
[HttpPost]
public ActionResult ActionName(Model model, string hndExtraParameter)
{
//Do your operation here.
}