【问题标题】:querystring not passing values to controller查询字符串没有将值传递给控制器
【发布时间】:2015-01-29 05:06:27
【问题描述】:

使用以下代码通过查询字符串将少量值传递给控制器​​中的 testFn()。但在 testFn 中,我得到的是空值。当我对 companyName、rdVal 等保持警惕时。它显示正确的值。但那些没有传递给控制器​​。请让我知道出了什么问题。

查看:

@Html.ActionLink("Search", null, null, new { id = "lnkSearchMaster", @class = "btn btn-success", onclick = "return lnkgotoAction();" })


function lnkgotoAction() { 
    $('#grdSearchResults').show();
    $('#searchdetails').show();
    var rdVal = $("input[name = SearchType]:checked").attr("id");
    if (rdVal == "CompanyList" || rdVal == "CompanyHistory" || rdVal == "ApplicationSatatus" || rdVal == "Certificates") {

        $('#grdSearchResults').show();
        var companyName = $('#companyname').val();
        var status = $('#status').val();
        var regNo = $('#registrationno').val();
        var appRegNo = $('#applicationrefferenceno').val();

        var url = '@Url.Content("~/")' + "Search/testFn?test='" + rdVal + "'&companyName='" + $('#companyname').val() +
                    "'&regNum='" + $('#registrationno').val() + "'&appRegNum='" + $('#applicationrefferenceno').val() + "'";
        alert(url);
    }

    $('#grdSearchResults').load(url + ' #grdSearchResults');
    TempData.clear();
    $('#grdSearchResults').show();
    $('#searchdetails').show();

    return false;
}

控制器:

 public ActionResult testFn(string test, string companyName, string regNum, string appRegNum)
    {}

【问题讨论】:

  • 你还在敲控制器吗?使用$('#grdSearchResults').load('@Url.Action("testFn", "Search")', { test: rdVal, companyName: companyName, regNo: regNo, appRegNum: appRegNum })
  • 是的,它正在击中控制器。但函数参数的值为空。我试过你的代码。仍然面临问题。 $('#grdSearchResults').load('@Url.Action("testFn", "Search")', { test: rdVal, companyName: companyName, regNo: regNo, appRegNum: appRegNum })
  • 您发送的值很可能为空。在.load() 之前尝试console.log({ test: rdVal, companyName: companyName, regNo: regNo, appRegNum: appRegNum }); 并检查输出

标签: asp.net-mvc-5 asp.net-ajax


【解决方案1】:

试试下面的方法,它会对你有所帮助,还要注意传递给查询字符串的变量名称必须与控制器操作参数名称匹配。

@Html.Raw(Url.Action("testFn", "Search"), new{ test= rdVal , companyName= companyName , regNum= regNo , appRegNum= appRegNo })

【讨论】:

  • Razor 代码在发送到客户端之前在服务器上进行解析。充其量这只会发布文本框的初始值,这有点毫无意义。
  • nop,如果名称不完全匹配,您将得到空值。
  • 这有什么关系? DefaultModelBinder 不区分大小写,因此{ name: 'Disha' }{Name: 'Disha' }{nAMe: 'Disha'} 都正确回发并绑定到参数string Name
  • 我说的不是区分大小写,而是拼写,'regNo'和'regNum','appRegNum'和'appRegNo'会被认为是不同的名字,'不完全匹配'。
  • 如果您对我的回答感到困惑或误解,请取消投票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
相关资源
最近更新 更多