Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何执行绑定到Razor文本框的地理编码计算?_Asp.net Mvc_Razor - Fatal编程技术网

Asp.net mvc 如何执行绑定到Razor文本框的地理编码计算?

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

在ASP.NET MVC 3中,使用Razor视图引擎,我有几个文本框组合了一个地址(如street、street nr、postalcode)

我想在我有足够的信息(如街道长度>0、街道长度>0等)后,再调用Bing地理代码Web服务。如果所有的文本框都有足够的信息,那么最好在客户端站点上进行验证,然后(向控制器)回发。回发后,Web服务调用的结果(lat/long)必须显示在视图中

如何做到这一点?

型号:

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>
}