2012-03-20 3 views
2

Почему мой метод действия связывает только первое слово строки, которое я передаю ему, используя строку запроса?mvc default model binder связывает только первое слово строки?

Например, в JQuery, я строю QueryString из результатов вызова Ajax:

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 
} 

Я заметил, что хорошо связывает правильно, но сообщение содержит только первое слово сообщения об ошибках, переданном в

Как я могу передать предложение в качестве одного параметра строки.? Есть ли лучший способ сделать это без строки запроса?

EDIT: hmm теперь, когда я думаю об этом, имеет смысл, поскольку URL-адреса не имеют места, но тогда как я могу это сделать ... есть ли специальный разделитель слов в стандартном связующем?

ответ

1

Это все о URL escaping: escape("It's me!") // result: It%27s%20me%21

ли, что вокруг вашего resultData.Message и он должен работать лучше. Для целей отладки используйте Fiddler2 или какой-либо веб-инспектор, чтобы узнать, какой запрос отправляется. Это действительно ценно при отладке AJAX ...

И, конечно же, не наоборот в C#: HttpUtility.UrDecode Method (String)

Смежные вопросы