Asp.net mvc 如何执行绑定到Razor文本框的地理编码计算?
在ASP.NET MVC 3中,使用Razor视图引擎,我有几个文本框组合了一个地址(如street、street nr、postalcode) 我想在我有足够的信息(如街道长度>0、街道长度>0等)后,再调用Bing地理代码Web服务。如果所有的文本框都有足够的信息,那么最好在客户端站点上进行验证,然后(向控制器)回发。回发后,Web服务调用的结果(lat/long)必须显示在视图中 如何做到这一点?型号:Asp.net mvc 如何执行绑定到Razor文本框的地理编码计算?,asp.net-mvc,razor,Asp.net Mvc,Razor,在ASP.NET MVC 3中,使用Razor视图引擎,我有几个文本框组合了一个地址(如street、street nr、postalcode) 我想在我有足够的信息(如街道长度>0、街道长度>0等)后,再调用Bing地理代码Web服务。如果所有的文本框都有足够的信息,那么最好在客户端站点上进行验证,然后(向控制器)回发。回发后,Web服务调用的结果(lat/long)必须显示在视图中 如何做到这一点?型号: public class GeoCodeViewModel { [String
public class GeoCodeViewModel
{
[StringLength(70, MinimumLength = 1)]
public string Street { get; set; }
[StringLength(10, MinimumLength = 1)]
public string PostCode { get; set; }
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new GeoCodeViewModel();
return View(model);
}
[HttpPost]
public ActionResult Index(GeoCodeViewModel model)
{
if (!ModelState.IsValid)
{
// the model is not valid => redisplay the view so that
// the user can fix his errors
return View(model);
}
// TODO: at this stage the model is valid => call the web service
...
}
}
视图:
@model GeoCodeViewModel
@使用(Html.BeginForm())
{
@LabelFor(x=>x.Street)
@EditorFor(x=>x.Street)
@Html.ValidationMessageFor(x=>x.Street)
@LabelFor(x=>x.PostCode)
@EditorFor(x=>x.PostCode)
@Html.ValidationMessageFor(x=>x.PostCode)
嗯
}
Thx达林。但是对web服务的调用在这里是作为回发完成的,而我希望对web服务的调用仍然在客户机上(没有回发)。总结如下:视图必须处于可编辑状态,在退出文本框时,必须检查是否有足够的最小信息并调用webservice。这可能吗?@PatrickPeters,您打算如何调用位于javascript不同域上的web服务?Bing API支持JSONP吗?webservice是基本的HTTP()。基于地址计算lat/long的例程被包装在一个单独的C#类中(这隐藏了WS调用的复杂性)。@PatrickPeters,这就是为什么需要从控制器调用web服务的原因。
@model GeoCodeViewModel
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
@using (Html.BeginForm())
{
<div>
@Html.LabelFor(x => x.Street)
@Html.EditorFor(x => x.Street)
@Html.ValidationMessageFor(x => x.Street)
</div>
<div>
@Html.LabelFor(x => x.PostCode)
@Html.EditorFor(x => x.PostCode)
@Html.ValidationMessageFor(x => x.PostCode)
</div>
<p><button type="submit">OK</button></p>
}