如何在执行c#方法之前运行javascript函数

时间:2013-10-10 10:09:11

标签: c# javascript jquery asp.net

我在最近几天面对这个问题......需要专家建议......

我正在尝试从后面的代码中的URL读取查询字符串值。如果查询字符串可用,那么我需要对其进行地理编码。并且它的功能在同一个.aspx页面上。

该函数将从谷歌获取地理编码(LAT,LNG)并将其分配给页面上可用的隐藏变量。之后我需要运行我的c#代码然后获取LAT,LNG值并进入数据库以找到最近的商店。

的Page_Load

protected void Page_Load(object sender, EventArgs e)
{
    _queryStringVal = Request.QueryString["k"];
    string eventTarget = Request["__EVENTTARGET"];
    string eventArgument = Request["__EVENTARGUMENT"];
    if (!Page.IsPostBack)
    {
      if (!String.IsNullOrEmpty(_queryStringVal))
      {
        qsText.Value = _queryStringVal;
        BindListView();
      }
    }
    else
    {
      if (!String.IsNullOrEmpty(eventArgument) || !String.IsNullOrEmpty(eventTarget))
      {
        Lat = Convert.ToDouble(eventTarget);
        Long = Convert.ToDouble(eventArgument);
        BindListView();
      }
    }
}

protected void BindListView()
{
    var parameter = _queryStringVal;

    if (!string.IsNullOrEmpty(parameter))
    {
      ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "Alert", "<script type='text/javascript'>alert('hello');</script>", true);
      //ScriptManager.RegisterStartupScript(this, GetType(), "GeoCodeAddress", "codeAddress(" + qsText.Value + ");", true);
    }

    Lat = Convert.ToDouble(currentLat.Value); // this is where error occurs because the value is NULL
    Long = Convert.ToDouble(currentLong.Value);

  if ((Lat == 0.00) || Long == 0.00)
    {
          ShowErrorPanel();
          return;
    }
}

正如您所见,当页面加载了查询字符串参数时,也不会显示简单警报。

我需要在c#尝试分配Lat,Long值之前运行codeAddress(param)函数。

请帮忙。

修改

当查询字符串值不存在时,将显示带有文本框的页面。当用户点击按钮,通过javascript我重定向到没有查询字符串的同一页面,它工作正常。我的家庭需要查询。我在页面上有一个常规搜索框,如果您输入邮政编码或城镇,它会将其重定向到带有查询的stroes页面并显示最近的商店。这就是为什么我需要查询才能工作..

JAVASCRIPT

$(document).ready(function () {
    var param = getParameterByName("k"); // function to get querystring param
    if (param.length > 1) {
          codeAddress(param);
    }
});

function codeAddress(addressToGeoCode) {
    var geocoder = new window.google.maps.Geocoder();
    geocoder.geocode({ 'address': addressToGeoCode }, function (results, status) {
      if (status == window.google.maps.GeocoderStatus.OK) {
            var firstLoc = results[0].geometry.location;
            lathv.val(firstLoc.lat());
            lnghv.val(firstLoc.lng());
            PageRedirect();
      }
      else {
            console.log('No results found: ' + status);
      }
    });
}

function PageRedirect() {
    //window.location.href = window.location.href.split('?')[0] + "?k=" + $('.AddressSearch').val();
   __doPostBack(lathv.val(), lnghv.val());
}

0 个答案:

没有答案