如何将字符串文本添加到MVC中的强类型视图

时间:2011-07-14 11:57:53

标签: asp.net-mvc asp.net-mvc-2

如何将字符串文本添加到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时,在tryupdatemodel上,它应该在数据库中保存为http://www.abc.com。             我尝试过这样的事情:<%: Html.TextBoxFor(model => "http://" + model.productWebsite, new { style = "width:300px;" })%>不起作用。

4 个答案:

答案 0 :(得分:3)

对于这个问题,修改属性本身更容易:

private string _productWebsite;
public string ProductWebstring
{
  get { return _productWebsite; }
  set 
  {
    _productWebsite = value;
    if (!string.IsNullOrEmpty(_productWebsite) && !_productWebsite.StartsWith("http"))
    {
      _productWebsite = "http://" + _productWebsite;
    }
  }

答案 1 :(得分:1)

您必须在控制器内自行完成 - 您可以使用 Uri 类。

另外,请尝试使用 DataType 属性在模型中标记您的媒体资源。

答案 2 :(得分:1)

当模型更新时,你应该在控制器中处理这个问题吗?

像这样:

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

}

答案 3 :(得分:0)

你的答案已经击中了头部,在你的模型中做到了。但是,如果您使用https链接或不太常见的ftp链接,那么它们的实施方式会略有错误。

我会建议这个......

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

这将检查协议后缀,如果不存在,则附加默认值http