在我的剃刀视图中,我使用的是Html.BeginForm
。在其中我有两个元素,当我设置clic时,应该提交表单但我需要添加一个额外的字符串参数。
@using (Html.BeginForm("Index", "Quiz", FormMethod.Post, new { id = "form" }))
{
...
}
[HttpPost]
public ActionResult Index(string parameter, QuizCompletedViewModel q) //FormCollection f)
{
...
if (button.Equals("d"))
{
...
return RedirectToAction("ShowResults", new { testId = Quiz.QuizId, answeredTest = answeredId });
}
else
{
...
return RedirectToAction("Index", "Dashboard");
}
}
因此,在我的jquery函数中,我使用$("#element").submit()
,参数parameter
总是为空(这是正常的)。如何使用JQUERY为parameter
添加其他数据?
注意:我没有使用AJAX。
答案 0 :(得分:6)
您可以使用表单中所需的名称和值添加隐藏的输入。此值将与所有其他表单项一起提交。
<input type="hidden" name="someName" value="someValue" />
编辑评论:
如果您将每个提交按钮作为属性提供,您可以在单击处理程序中获取它,然后在表单内附加一个带有值的隐藏字段。类似的东西:
$(function(){
$('#form input[type=submit]').click(function(e) {
var val = this.getAttribute("data-param");
$(this).closest('form').append('<input type="hidden" name="param" value="' + val + '" />");
});
});
未经测试,只是一种预感。希望在按钮单击事件之前不会触发表单提交事件。您还需要处理输入事件和按键等。
为什么不想使用ajax?
答案 1 :(得分:6)
在您的表单提交上尝试如下:
$("form").submit(function(){
$.ajax({
type: 'POST',
url: "/Quiz/Index",
dataType: "json",
data: $("form").serialize() + '¶meter=param1' ,
success: function () {
alert("Successful");
}
error: function(){
alert('error');
}
});
});
希望它有所帮助。
修改强>
在jQuery函数中尝试这样:
$('form').append('¶m=a');
答案 2 :(得分:4)
根据您的评论,您最简单的方法是按下submit
类型的按钮并为其指定name
。如果他们有name
,则点击按钮的value
将自动与表单发送,请参阅:sending form's submit button's value?
示例:
点击a
按钮后,parameter
将以值a
发布。同样适用于b
和c
。如果点击none
按钮,则不会发送任何值,parameter
将为null
(出于演示目的显示,您可能不需要此值)。
@using (Html.BeginForm("Index", "Quiz", FormMethod.Post, new { id = "form" }))
{
...
<input type="submit" value="a" name="parameter" />
<input type="submit" value="b" name="parameter" />
<input type="submit" value="c" name="parameter" />
<input type="submit" value="none" />
}