ユーザーが携帯電話番号を入力してタブアウトしたときにリードを作成する必要があるアプリケーションを作成しています。入力された携帯電話番号が有効な場合、リードが作成されます(フォームの他のすべての詳細とともに)。しかし、モデルをビューからコントローラーに渡すと、データがnullになります。
意見
@{
ViewBag.Title = "EmailQuote";
Layout = "~/Views/Shared/Template.cshtml";
}
@model Max.VirtualSalesManager.UI.ViewModels.LeadViewModel
@{
var data = Html.Raw(Json.Encode(Model));
}
<script src="@Url.Content("~/Scripts/Common.js")" type="text/javascript"></script>
<h2>
EmailQuote</h2>
@using Acidaes.VirtualSalesManager.UI.Helpers
@using (Html.BeginForm("GenerateEQuote", "Quote", FormMethod.Post, new{id="frmEmailQuote" }))
{
@Html.MandatoryLabel("Name", false, new { style = "width: 50px; display: inline" }) @Html.FullName()
@Html.MandatoryLabel("City", false, new { style = "width: 50px; display: inline" }) @Html.DropDownListFor(m => m.CommunicationAddress.City, new SelectList(ViewBag.CityList, "Key", "Value"), "select", new { id = "ddlCity" })
@Html.MandatoryLabel("Mobile No.", false, new { style = "width: 100px; display: inline" }) @Html.TextBoxFor(m => m.MobileNumber, new { style = "width: 100px", id = "txtmobilenumber", onBlur = "createLead('"+@data+"')" })
@Html.MandatoryLabel("Email ID", false, new { style = "width: 80px; display: inline" }) @Html.TextBoxFor(m => m.EmailId, new { style = "width: 100px" })
@Html.HiddenFor(m => m.LeadId)
<input type="submit" id="btnSubmit" />
}
JS
function createLead(data) {
var number = /^[0-9]+$/;
var mobileNumber = document.getElementById('txtmobilenumber').value;
if (mobileNumber.match(number) && mobileNumber.length == 10) {
var jsondata = JSON.stringify(data);
var Parameters = "{'data':'" + ("#frmEmailQuote").serialize() + "'}";
Events.DoServerRequest('/MAXVSM/Quote/test', Parameters, GetLeadId);
}
}
DoServerRequest 関数
DoServerRequest: function (url, data, funSuccess) {
$.ajax({
type: "POST",
url: url,
data: data,
contentType: "application/json; charset=utf-8",
async: false,
dataType: "json",
success: funSuccess,
error: function () {
alert("Error in getting list");
}
});
Controller
[HttpPost]
[ActionName("test")]
public JsonResult test(LeadViewModel data)
{
LeadViewModel t = new LeadViewModel();
t.MobileNumber = data.MobileNumber;
return Json(t);
}
ビューから ajax 関数に正常に到達するデータですが、データがコントローラーに到達するときは null です。