我试图在这里遵循一些good posts得到这个工作,但每次我点击ajax回发在我的控制器中的断点显示一个模型与空值。此页面仅显示用于查看的模型值,但我试图将它们放在自己的窗体中,并将它们封装在ajax窗体中,似乎没有任何工作。MVC4传递模型通过Ajax.BeginForm
@model VendorProfileIntranet.Models.VendorProfile
$(function() {
$("form").submit(function() {
if ($(this).valid()) {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (result) {
$("#message").html(result);
}
});
}
return false;
});
});
@using (Ajax.BeginForm("SelectVendor", "Home", new AjaxOptions { HttpMethod="post", InsertionMode=InsertionMode.Replace, UpdateTargetId="message" }))
{
<div style="float:right; width:500px">
<div id="message"></div>
<input id="btnSubmit" type="submit" value="Select Vendor" />
</div>
此处缩写的视图非常长(仅显示用于查看的模型值)。
<div id="viewform">
<div id="viewform-contact" style="float:left;">
<fieldset>
<legend>Contact Information</legend>
@Html.HiddenFor(model => model.ProfileID)
<div class="view-field">
@Html.LabelFor(model => model.Name)
@Html.DisplayFor(model => model.Name)
</div>
<br />
<div class="view-field">
@Html.LabelFor(model => model.Email)
@Html.DisplayFor(model => model.Email)
</div>
<br />
<div class="view-field">
@Html.LabelFor(model => model.Phone)
@Html.DisplayFor(model => model.Phone)
</div>
<br />
<div class="view-field">
@Html.LabelFor(model => model.Website)
@Html.DisplayFor(model => model.Website)
</div>
<br />
<div class="view-field">
@Html.LabelFor(model => model.CompanyName)
@Html.DisplayFor(model => model.CompanyName)
</div>
<br />
<div class="view-field">
@Html.LabelFor(model => model.Address1)
@Html.DisplayFor(model => model.Address1)
</div>
<br />
<div class="view-field">
@Html.LabelFor(model => model.Address2)
@Html.DisplayFor(model => model.Address2)
</div>
<br />
<div class="view-field">
@Html.LabelFor(model => model.City)
@Html.DisplayFor(model => model.City)
</div>
<br />
<div class="view-field">
@Html.LabelFor(model => model.State)
@Html.DisplayFor(model => model.State)
</div>
<br />
<div class="view-field">
@Html.LabelFor(model => model.Zip)
@Html.DisplayFor(model => model.Zip)
</div>
<br />
<div class="view-fieldwide">
@Html.LabelFor(model => model.VendorNotes)
</div>
<br />
<div class="view-fieldwide">
@Html.DisplayFor(model => model.VendorNotes)
</div>
<br /><br />
</fieldset>
</div>
}
控制器。我以一种或两种形式尝试了以上内容。通过上面的代码,模型包含除填充在隐藏输入字段中的ProfileID之外的所有空值。我认为传递模型应该不需要为每个模型值创建一个隐藏字段?
[HttpPost]
public ActionResult SelectVendor(VendorProfile pageModel)
{
// handle selected vendor
_DAL.SelectVendor(pageModel.ProfileID);
return Content("This Vendor has been selected", "text/html");
}
ANSWER
模型值不会由于使用的DisplayFor
您似乎缺少输入元素在您的窗体' – 2013-03-15 18:52:39
@四十二有一个按钮,单击时应传回其他形式的模型(未显示),并在db中插入记录并更新消息div标记它是成功的。我尝试将所有表单元素都放在ajax表单中,但这样也不起作用,所以一个表单或两个表单不起作用。我知道我错过了一些东西。 – SQLGrinder 2013-03-15 20:43:36
你可以发表你的观点的其余部分吗? – mattytommo 2013-03-15 20:50:37