mvc默认模型绑定器只绑定字符串的第一个单词?

时间:2012-03-20 06:24:36

标签: asp.net ajax string bind

为什么我的action方法只绑定我使用查询字符串传递给它的字符串的第一个单词?

例如,在jquery中,我根据ajax调用的结果构建了一个queryString:

success: return(resultData){
  var queryString = "?ok=true&message=" + resultData.message;
}

然后我尝试通过调用控制器并传递queryString

将视图加载到对话框中
$dialogHandle.load("/Account/RegisterStatus" + queryString, function() { ... });

此时queryString正确保存整个消息。但是,如果我打破我的控制器:

public ActionResult RegisterStatus(bool ok, string message)
{
        //break here
}

我注意到ok正确绑定但是消息只包含传入的错误消息的第一个单词。

如何将句子作为一个字符串参数传递? 有没有更好的方法来做这个,没有查询字符串?

编辑:嗯现在我认为它确实有意义,因为网址不能有空间但是我如何实现这个...默认模型绑定中是否有特定的单词分隔符?

1 个答案:

答案 0 :(得分:1)

所有关于URL escapingescape("It's me!") // result: It%27s%20me%21

resultData.Message周围做到这一点,它应该会更好。出于调试目的,请使用Fiddler2或某些Web Inspector查看正在发送的请求。在调试AJAX时,这非常有用......

当然,在C#中反过来:HttpUtility.UrDecode Method (String)