我是MVC的新手,需要一种提交模态表单来调用控制器动作的方法。不知何故,提交的值不会传递给控制器。
如果我不使用Jquery UI对话框模式表单,则表单正确提交(在表单标记内有一个提交按钮)。否则,通过调用$(“#newProductForm”)。submit();从jquery开始,所有值都不会传递给控制器。
<a id="addNewCategory" href="#">Add new category</a>
<div id="dialog-form" title="Add new category">
@using (Html.BeginForm("ProductCategoryInsert", "Product", FormMethod.Post, new { id = "newProductForm" }))
{
@Html.HiddenFor(m => m.Id)
@Html.CheckBox("IsFeaturedProduct")
@Html.TextBox("DisplayOrder")
}
</div>
$(document).ready(function () { $("#dialog-form").dialog({ autoOpen: false, height: 300, width: 350, modal: true, buttons: { "Add new category": function () { $("#newProductForm").submit(); return true; }, Cancel: function () { $(this).dialog("close"); } }, close: function () { allFields.val("").removeClass("ui-state-error"); } }); $("#addNewCategory") .button() .click(function () { $("#dialog-form").dialog("open"); }); });
=========================================== 控制器
[HttpPost]
public ActionResult ProductCategoryInsert(ProductModel.ProductCategoryModel model)
{
var productCategory = new ProductCategory()
{
ProductId = model.Id,
CategoryId = model.CategoryId,
IsFeaturedProduct = model.IsFeaturedProduct,
DisplayOrder = model.DisplayOrder
};
_categoryService.InsertProductCategory(productCategory);
return View();
}
答案 0 :(得分:1)
我没有看到任何因你提供的细节而触发红旗的事情。不过,我有两条建议可能有助于您进一步调查:
1)在表单中尝试CheckBoxFor
和TextBoxFor
。就像现在一样,我假设它们应该提交,假设您指定的名称与控制器方法期望的模型中的属性相匹配。
2)使用Firefox中的Firebug控制台查看发布到控制器的内容。
请记住,表单中字段上的名称必须与模型中的属性完全匹配。
希望有所帮助!