AjaxOption中的字符串参数在提交时为null但在响应中显示

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,现在它没有传递为null0仍然显示在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)

Ray*_*und 0

看起来像 S#arp 架构中的一个错误,所以我没有使用模型,而是使用 jQuery 来提取我需要的值,如下所示

myJSFunction(" + Model.IntegerParameter + ", $('#SearchString').val())"
Run Code Online (Sandbox Code Playgroud)