Как добавить String Text в строго типизированные представления в MVC - PullRequest
0 голосов
/ 14 июля 2011

Как добавить строковый текст в строго типизированные представления в MVC, например, я получил:

<div class="editor-field">
            <%: Html.TextBoxFor(model => model.productWebsite, new { style = "width:300px;" })%>
            <%: Html.ValidationMessageFor(model => model.productWebsite)%>
        </div>

Я хочу добавить "http://" к model.productWebsite, поэтому, когда пользователь пишет www.abc.com, при попытке обновления его следует сохранить как http://www.abc.com в базе данных. Я пытался сделать что-то вроде: <%: Html.TextBoxFor(model => "http://" + model.productWebsite, new { style = "width:300px;" })%>, который не работает.

Ответы [ 4 ]

3 голосов
/ 14 июля 2011

Для этой проблемы проще просто изменить само свойство:

private string _productWebsite;
public string ProductWebstring
{
  get { return _productWebsite; }
  set 
  {
    _productWebsite = value;
    if (!string.IsNullOrEmpty(_productWebsite) && !_productWebsite.StartsWith("http"))
    {
      _productWebsite = "http://" + _productWebsite;
    }
  }
1 голос
/ 14 июля 2011

Конечно, это то, что вы должны обрабатывать в контроллере при обновлении модели?

Как это:

public ActionResult Update(ModelClass model)
{
    if (!model.productWebsite.StartsWith("http://")
{
    model.productWebsite = "http://" + model.productWebsite 
}

}
1 голос
/ 14 июля 2011

Вы должны будете сделать это сами внутри контроллера - вы можете использовать Uri class.

Также попробуйте пометить ваше свойство в модели с помощью DataType атрибут.

0 голосов
/ 14 июля 2011

Ответы, которые вы ударили по голове, сделайте это в своей модели. Но их реализация немного ошибочна, что если у вас есть ссылка https или, реже, ссылка ftp.

Я бы предложил это ...

if (!model.productWebsite.Contains("://"))
{
    model.productWebsite = string.format("http://{0}", model.productWebsite);
}

Проверяет суффикс протокола и, если его нет, добавляет значение по умолчанию http

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...