0

我想使用粒度数据验证。[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);
}
4

2 回答 2

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 与当前执行的请求相关联。

于 2013-04-18T05:42:38.287 回答
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);
}
于 2013-04-19T22:38:52.953 回答