ASP.NET MVC 4.5 OnBlur事件TextBox

时间:2014-10-29 11:08:48

标签: c# jquery ajax asp.net-mvc

我有一个C#ASP.net MVC 4.5解决方案。我想创建一个具有自动地址验证的表单。 如果您输入邮政编码和housenumber,则使用外部REST API查找城市名称。

填写住宅编号后,必须调用控制器中的函数(使用AJAX)查找地址,更新模型数据并在表单中显示结果。我无法弄清楚如何做到这一点。

我正在考虑在调用来自housenumber的onBlur时触发一个表单(使用AJAX)。但这是最好的方法吗?回帖整个表格真的是最好的方法吗?

到目前为止的例子:

<div class="col-md-7">
 @Html.TextBoxFor(model => model.HouseNumber, new { @class = "form-control", @placeholder = "HouseNumber" })
 @Html.ValidationMessageFor(model => model.HouseNumber, null, new { @class = "text-danger" })
</div>

当TextBox HouseNumber失去焦点时,我想在我的控制器'AddressBook'中调用函数'ValidateAddress'。该函数将查找街道名称和城市,并将填充model.Streetname和model.City字段。

3 个答案:

答案 0 :(得分:1)

您可以在HouseNumber文本框中使用模糊事件

试试这个

@Html.TextBoxFor(model => model.HouseNumber, new { @class = "form-control", @placeholder = "HouseNumber" onblur = "alert('call some javascript function')"})

更好地使用jquery函数

<强>更新

    $("#HouseNumber").blur(function () {
         $.get("ControllerName/ActionMethod",{parameterName:value},function(data){
// extract values from data object and assign ut to your controls
});
});

答案 1 :(得分:1)

好吧,您可以更改控制器操作以将模型作为JSON返回:

public ActionResult ValidateAddress(YourModel model){
  // Do  your validation
  return Json(model); 
}

然后为此操作添加一个AJAX调用并在回调中填写表单:

$( "#HouseNumber" ).blur( function() {
  $.ajax({
    url: "/yourActionUrl"
    type: "POST",
    data: $("#yourForm").serialize(),
    dataType: "json"
  }).done(function( model ) {
    $("#Streetname").val(model.Streetname);
    $("#City").val(model.City);
  });
});

答案 2 :(得分:0)

使用相同的模型参数

在控制器上获取Mathod
public ActionResult Login(LoginData model)
    {
        if (model == null)
        {
            model = new LoginData();
        }
        return View(model);
    }

填写hoseno后如果你想要你可以使用ajax并重定向到你的getmethod并传递你的模型,请调用你的函数

用于验证使用脚本验证,以便您可以根据您的条件删除或添加。