MVC3:用于发送表单(模型)值和额外参数的按钮

时间:2012-05-31 07:58:00

标签: asp.net-mvc-3 button parameters

在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 })

2 个答案:

答案 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.
}