Связыватель модели mvc по умолчанию привязывает только первое слово строки? - PullRequest
2 голосов
/ 20 марта 2012

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

Например, в 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
}

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

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

РЕДАКТИРОВАТЬ: хм, теперь, когда я думаю об этом, имеет смысл, так как URL-адреса не могут иметь место, но тогда как мне это сделать ... есть ли конкретныйразделитель слов в связывателе модели по умолчанию?

1 Ответ

1 голос
/ 20 марта 2012

Это все о URL, экранирующий : escape("It's me!") // result: It%27s%20me%21

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

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

...