2015-01-29 3 views
0

Передача нескольких значений с помощью querystring, to testFn() в контроллере с использованием кода ниже. Но в testFn я получаю нулевые значения. Когда я предупреждаю об имени компании, rdVal и т. Д. он показывает правильные значения. но они не переходят к контроллеру. Пожалуйста, дайте мне знать, что пошло не так.querystring не передает значения контроллеру

Вид:

@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) 
    {} 
+0

Вы даже попали в контроллер? Используйте '$ ('# grdSearchResults'). Load ('@ Url.Action (" testFn "," Поиск ")', {test: rdVal, companyName: companyName, regNo: regNo, appRegNum: appRegNum})'. –

+0

Да, это пульт управления. но значения параметров функции равны нулю. Я попробовал ваш код. Все еще стоит перед проблемой. $ ('# grdSearchResults'). load ('@ Url.Action ("testFn", "Поиск")', {test: rdVal, companyName: companyName, regNo: regNo, appRegNum: appRegNum}) –

+0

Значения, которые вы отправка, скорее всего null. Попробуйте 'console.log ({test: rdVal, companyName: companyName, regNo: regNo, appRegNum: appRegNum});' непосредственно перед '.load()' и проверить вывод –

ответ

-1

Попробуйте, как показано ниже, это поможет вам, и всегда забочусь имя переменной передается в строку запроса должны совпадать с именами параметров действий контроллера.

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

Код Razor анализируется на сервере до его отправки клиент. В лучшем случае это приведет только к отправке исходных значений текстовых полей, которые немного бессмысленны. –

+0

nop, вы получите нулевое значение, если имена не совпадают точно. – Disha

+0

Что с этим связано? 'DefaultModelBinder' не чувствителен к регистру, поэтому' {name: 'Disha'} ',' {Name: 'Disha'} 'и' {nAMe: 'Disha'} 'все правильно отправить и привязать к параметру' string Name' –