如何绑定HtmlString?

时间:2015-12-23 18:17:59

标签: asp.net-mvc viewmodel

我必须显示的文字在我的文本框中正常显示,并按照我的要求展示。但问题是,当我需要更新文本时,它告诉我没有任何东西,所以它告诉我它有一个空值。

它存在于带有文本的数据库中。

index.cshtml

@model MVCOrdklar2015.Models.Admin.IndholdViewModel
@using (Html.BeginForm("index", "AdminIndhold", FormMethod.Post))
        {
            <fieldset>
                <div class="form-group">
                    <div class="col-xs-12">
                        @Html.TextAreaFor(i => i.IndholdText, new
                   {
                       @class = "ckeditor"
                   })
                    </div>
                </div>
            </fieldset>
            <div class="form-group form-actions">
                <div class="col-xs-12">
                    <button type="submit" class="btn btn-effect-ripple btn-primary">Opdater</button>
                </div>
            </div>
        }

型号:

namespace MVCOrdklar2015.Models.Admin
{
    public class IndholdViewModel
    {
        public HtmlString IndholdText
        {
            get; set;
        }
    }
}

控制器:

[HttpPost]
    [ValidateInput(false)]
    public ActionResult Index(IndholdViewModel ModelInput)
    {
        if (!ModelState.IsValid)
        {
            DataLinqDB db = new DataLinqDB();
            var forsideindhold = db.forsides.FirstOrDefault(i => i.Id == 1);
            if (forsideindhold != null)
            {
                //error here
                forsideindhold.tekst = new HtmlString(ModelInput.IndholdText.ToString()).ToString();

                db.SubmitChanges();

                return RedirectToAction("index/Opdater");
            }
        }
        return View();
    }

你可以在这里看到图片,看看它告诉我错误。 enter image description here

1 个答案:

答案 0 :(得分:2)

如果没有为其注册自定义模型绑定器,默认的模型绑定器不会绑定HtmlString属性。

尝试使用string结合[AllowHtml]属性代替:

[AllowHtml]
public string IndholdText
{
    get; set;
}

在你的控制器中:

forsideindhold.tekst = ModelInput.IndholdText;

请参阅MSDN