【发布时间】:2016-03-08 13:43:55
【问题描述】:
您好,在我看来,我有一个称为联系人的字段。如果我单击该按钮,我会在该字段附近保留一个添加按钮,部分视图将显示为弹出窗口。
我的部分视图
如果我输入详细信息并单击保存按钮,则会出现保存数据的发布操作。现在我有两个问题。
1) CustomerName 的值将为空。
2) 在输入详细信息后单击弹出窗口中的创建按钮后,它要么必须显示相同的弹出窗口,要么必须显示父视图(访客表单),我在此步骤中遇到了问题。在这个地方它重定向到局部视图的主窗口。下图中提到了这一点。我尽力解释我的问题。请任何人帮我解决这个问题。
错误操作
我的查看代码
@Html.Label("Contact Person", new { @class = "control-label" })
@Html.DropDownListFor(model => model.CustomerContactID, new SelectList(string.Empty, "Value", "Text"), "Please select a ContactPerson", new { @class = "form-control", type = "text", id = "CustomerContactID" })
<button id="AddContactPerson">Add ContactPerson</button>
<div id="AddNewContactPerson"></div>
我的 j-query 写在父视图中
$(function () {
$('#AddNewContactPerson').dialog({
autoOpen: false,
width: 400,
height:500,
resizable: false,
title: 'Add New',
modal: true,
open: function(event, ui) {
$(this).load("@Url.Action("ContactPersonPartialView", "VisitorsForm")");
},
buttons: {
"Close": function () {
$(this).dialog("close");
}
}
});
$("#AddContactPerson").click(function () {
$("#AddNewContactPerson").dialog("open");
});
});
控制器代码
public ActionResult ContactPersonPartialView()
{
ViewBag.CustomerID = new SelectList(db.Customers, "CustomerID", "DisplayName");
return View("ContactPersonPartialView");
}
[HttpPost]
public JsonResult ContactPersonCreate(VisitorsViewModel VVviewmodel)
{
ViewBag.CustomerID = new SelectList(db.Customers, "CustomerID", "DisplayName", VVviewmodel.CustomerID);
var ContactIDObj = Guid.NewGuid();
var CustomerContactIDObj = Guid.NewGuid();
var CustomerContactObj = new CustomerContact()
{
CustomerContactID = CustomerContactIDObj,
CustomerID = VVviewmodel.CustomerID,
ContactReference = VVviewmodel.ContactPerson,
ContactID = ContactIDObj,
IsActive = true,
IsDeleted = false,
CreatedDate = DateTime.Now,
EditedDate = DateTime.Now,
LastActiveOn = DateTime.Now,
RowID = Guid.NewGuid(),
CreatedSessionID = Guid.NewGuid(),
EditedSessionID = Guid.NewGuid(),
OfflineMode = false,
OfflineID = Guid.NewGuid()
};
var ContactObj = new Contact()
{
ContactID = ContactIDObj,
DisplayName = VVviewmodel.CustomerID.ToString(),
PrintName = VVviewmodel.CustomerID.ToString(),
Phone1 = VVviewmodel.PhoneNo,
Mobile1 = VVviewmodel.MobileNo,
Email1 = VVviewmodel.Email,
Email2 = VVviewmodel.AlternateEmail
};
db.Contacts.Add(ContactObj);
db.CustomerContacts.Add(CustomerContactObj);
db.SaveChanges();
ModelState.Clear();
//return Json(new
//{
// redirectUrl = Url.Action("create", "VisitorsForm"),
// isRedirect = true
//});
return Json("VisitorsForm", JsonRequestBehavior.AllowGet);
}
我不知道如何重定向到相同的弹出窗口部分视图或父视图,请任何人更正我的重定向控制器代码。
我的部分查看代码
<div id="AddNewContactPerson">
@Html.Label("Customer Name")
@Html.DropDownList("CustomerID", "Select")
@Html.LabelFor(model => model.ContactPerson)
@Html.EditorFor(model => model.ContactPerson)
@Html.ValidationMessageFor(model => model.ContactPerson)
@Html.LabelFor(model => model.Email)
@Html.EditorFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
@Html.LabelFor(model => model.AlternateEmail)
@Html.EditorFor(model => model.AlternateEmail)
@Html.ValidationMessageFor(model => model.AlternateEmail)
@Html.LabelFor(model => model.PhoneNo)
@Html.EditorFor(model => model.PhoneNo)
@Html.ValidationMessageFor(model => model.PhoneNo)
@Html.LabelFor(model => model.MobileNo)
@Html.EditorFor(model => model.MobileNo)
@Html.ValidationMessageFor(model => model.MobileNo)
<p>
<input type="submit" value="Create" onclick="SaveContact()" />
</p>
</div>
</form>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
<script src="~/Scripts/jquery-1.10.4-ui.min.js"></script>
<link href="~/Content/jquery-ui-1.10.4.custom.min.css" rel="stylesheet" />
<script src="~/Scripts/jquery-ui-1.8.24.min.js"></script>
<script type="text/javascript">
function SaveContact() {
var CustomerName = $("#CustomerID").val();
var ContactPerson = $("#ContactPerson").val();
var Email = $("#Email").val();
var AlternateEmail = $("#AlternateEmail").val();
var PhoneNo = $("#PhoneNo").val();
var MobileNo = $("#MobileNo").val();
var CustomerContact = {
"ContactPerson": ContactPerson, "Email": Email,
"AlternateEmail": AlternateEmail, "PhoneNo": PhoneNo,
"MobileNo": MobileNo, "CustomerID": CustomerName
};
$.post("/VisitorsForm/ContactPersonCreate", CustomerContact,
function (data) { if (data == 0) { location = location.href; } }, 'json');
}
</script>
我在这里发布了我的整个代码,请任何人检查我的代码。在部分视图中,当我单击创建按钮并且它没有正确重定向时,客户名称将为空。我尽力解释我的问题。请任何人为这个问题提供解决方案。
提前谢谢..
【问题讨论】:
-
首先删除 type="submit"。您没有提交表单。您正在单击按钮时调用 savecontact 函数。
标签: c# jquery ajax twitter-bootstrap asp.net-mvc-4