Как ОСТАНОВИТЬ данные модели, появляющиеся в URL - PullRequest
0 голосов
/ 22 марта 2012

Как я могу передать модель представления в представление без отображения данных модели в URL-адресе?

public ActionResult MyView(MyModel model)
{
    model.memberId = "Secret Id"
    return View("MyView", model)
}

URL-адрес отображается как

http://localhost:1234/MyView?memberId=Secret Id

Данные не являются секретно секретнымино показывать его в URL не очень приемлемо.

Ответы [ 2 ]

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

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

Но чтобы ответить на ваш вопрос:Во избежание появления memberId в URL, вы можете отправить свою форму по почте - но это, конечно, также небезопасно.

Вы должны лучше хранить это в сеансе, например.

0 голосов
/ 22 марта 2012

Как уже упоминалось, модели представлений - это модели для вашего представления.Никогда не следует хранить какие-либо данные в модели представления, которые не должны быть представлены клиенту в одной форме или форме (будь то скрытое значение формы, часть URL-адреса или вызов ajax).

Есливам действительно нужно, чтобы данные были секретными, и вы хотите передать их между действиями, использовать TempData или ASPNet Session.Таким образом, он не идет нигде рядом с клиентом.

Я написал генератор CAPTCHA, который использует TempData для хранения фактической строки CAPTCHA, поскольку отправка ее клиенту будет означать, что любая автоматизированная система сможет прочитать строку,Я бы рекомендовал использовать TempData в течение сеанса, поскольку он сохраняется только для одного запроса - тогда как сеанс требует управления самостоятельно.

TempData["MyDataIdentifier"] = "MyObjectOrValue";
...