我想使用粒度数据验证。 [AllowHtml]属性不适用于FormCollection 除了使用ValidateInput(false)之外,还有其他选择吗?

在元数据中:

[AllowHtml]
[DataType(DataType.MultilineText)]
[Display(Name = "Content")]
public string Content { get; set; }

in edit action:

[HttpPost]
public virtual ActionResult Edit(int id, FormCollection formCollection)
{
    var obj = service.Get(id);

    if (ModelState.IsValid)
    {
        UpdateModel(obj, formCollection);
        service.Update(obj);

        return OnEdited(obj);
    }

    return View(obj);
}

===============>>#1 票数:1

您不能将AllowHtml与FormCollection一起使用。 您可以使用[ValidateInput]属性,但是显然,这对所有值都禁用了验证:

[HttpPost]
[ValidateInput(false)]
public ActionResult Edit(FormCollection collection, int id)
{
    var myEntity = _myRepo.Get(id);
    TryUpdateModel(objective);
    return DoSave(objective);
}

据说我将使用以下内容:

[HttpPost]
public ActionResult Edit(MyEntity entity)
{
    if (ModelState.IsValid)
    {
        _myRepo.Save(entity);
        return RedirectToAction("Success");
    }
    return View(entity);
}

绑定FormCollection时不起作用的一个简化原因是,没有任何东西将您在某个类的某些属性上定义的AllowHtml与当前正在执行的请求相关联。

===============>>#2 票数:0

[HttpPost]
public virtual ActionResult Edit(T obj)
{
    if (ModelState.IsValid)
    {
        if (TryUpdateModel(obj))
        {
            T old = service.Get(obj.ID);
            UpdateModel(old);
            service.Update(old); // EntityModelObject.SaveChanges();

            return OnEdited(obj);
        }
    }

    return View(obj);
}

  ask by oyaebunterkrah translate from so

未解决问题?本站智能推荐: