Ray*_*und 5 c# asp.net-mvc jquery s#arp-architecture asp.net-mvc-3
在这段代码中
@using (Ajax.BeginForm("MyAction", "MyRouteValues", new AjaxOptions { OnSuccess = "myJSFunction(" + Model.IntegerParameter + ", '" + Model.StringParameter + "')" }))
Run Code Online (Sandbox Code Playgroud)
为什么我的Javascript正确识别Model.IntegerParameter但Model.StringParameter为null?当我检查响应时,我确信它上面有数据,它显示如下
data-ajax-success="myJSFunction(111111, 'AAAAAA')"
Run Code Online (Sandbox Code Playgroud)
我的View模型非常简单,看起来像这样
public class MyViewModel
{
public int IntegerParameter { get; set; }
public string StringParameter { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
添加了信息
我尝试将第二个参数更改为int,现在它没有传递为null但0仍然显示在FireBug的响应中.
我添加了Html.Raw,但它仍然null在Javascript中获得一个值.
这是我在控制台响应中得到的真实世界截图:

---------------另一个更新------------------
我尝试了所有的建议,但它似乎是MVC s#arp中的一个BUG?我试过不同的项目和不同的PC,它仍然适合我.我注意到这只会发生,如果它来自一个模型它看起来像在Javascript响应之间发生的事情,无论是参数中的第一个,第二个还是任何位置,如果我使用硬编码值,字符串的值都会丢失如:
myJSFunction(" + Model.IntegerParameter + ", 'AAAAAAAA')"
Run Code Online (Sandbox Code Playgroud)
我得到了一个成功的结果,如果我像这样使用jQuery:
myJSFunction(" + Model.IntegerParameter + ", $('#SearchString').val())"
Run Code Online (Sandbox Code Playgroud)
这也有效,但是如果我确实传递了一个像这样的字符串的模型
myJSFunction(" + Model.IntegerParameter + ", '" + Model.StringParameter + "')"
Run Code Online (Sandbox Code Playgroud)
这不起作用.
所以你想看看现实世界中真正发生了什么,我考虑了@Darin和@Shark的建议.这是一个截图:

正如您在响应中看到的那样,它存在但是当传递给Javascript时,它会丢失.这也是现实生活中的Javascript
displayResultsPopUpWindow: function (model) {
var postData = {
transactionId: model.transactionId,
searchString: model.searchString
};
$.post("/Invoicing/GetSearchResults", postData, function (data) {
WindowHelper.displayWindow("Add Airline Transaction", "<div id='matchBookingResults'>" + unescape(data.viewHtml) + "</div>", 640, 500);
});
},
Run Code Online (Sandbox Code Playgroud)
看起来像 S#arp 架构中的一个错误,所以我没有使用模型,而是使用 jQuery 来提取我需要的值,如下所示
myJSFunction(" + Model.IntegerParameter + ", $('#SearchString').val())"
Run Code Online (Sandbox Code Playgroud)