【发布时间】:2013-03-15 18:49:48
【问题描述】:
我曾尝试在此处关注good posts 以使其正常工作,但每次我单击 ajax 回发时,我的控制器中的断点都会显示一个具有空值的模型。此页面显示模型值仅供查看,但我尝试将它们放在自己的形式中并将它们包装在 ajax 形式中,但似乎没有任何效果。
@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");
}
回答
由于使用了DisplayFor,模型值没有绑定
【问题讨论】:
-
您的表单中似乎缺少输入元素'
-
@Forty-Two 有一个按钮,当单击该按钮时,应该返回另一种形式的模型(未显示)并在 db 中插入一条记录并在 div 标签中更新消息,表明它是成功的。我尝试将所有表单元素放在 ajax 表单中,但这也不起作用,所以一个或两个表单不起作用。我知道我错过了什么。
-
你能发表你的观点吗?
-
@mattytommo 见上文。我怀疑我设置一两个表单的方式有问题。就像我说的那样,我已经尝试了几种方法。 THx
标签: c# jquery asp.net-mvc asp.net-mvc-4 razor