动态HTML内容 - "从客户端检测到潜在危险的Request.Form值"

Ste*_*ven 2 c# asp.net asp.net-mvc asp.net-mvc-3

我正在使用MVC 3和Razor.

我有一个页面,您可以在其中创建供应商.在前端,供应商的页面有3个内容:名称,描述(HTML)和包含HTML的多个选项卡.我的客户希望标签是动态的,他们希望能够在添加供应商时添加/编辑/删除标签和内容.

所以这是我的数据库设计:

Vendors
-------------------
VendorID (PK)
Name
Description

VendorTabs
-------------------
VendorTabID (PK)
VendorID (FK)
Title
Content
Run Code Online (Sandbox Code Playgroud)

这是我的视图模型:

public class VendorViewModel
{
    [ScaffoldColumn(false)]
    public int VendorId { get; set; }

    public string Name { get; set; }

    [AllowHtml]
    public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

而我的控制器发布方法:

[HttpPost]
public ActionResult Create(VendorViewModel viewModel, string[] tabTitles, string[] tabContent)
{
    var vendor = new Vendor();
    vendor.Name = viewModel.Name;
    vendor.Description = viewModel.Description;

    if (ModelState.IsValid)
    {
        for (int i = 0; i < tabTitles.Length; i++)
        {
            vendor.VendorTabs.Add(new VendorTab
            {
                VendorID = vendor.VendorID,
                Title = tabTitles[i],
                Content = tabContent[0]
            });
        }

        _vendorsRepository.SaveVendor(vendor);

        return RedirectToAction("Index");
    }

    return View(viewModel);     // validation error, so redisplay same view
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我有动态添加/删除选项卡标题和选项卡描述的字段的功能.它们传递给通过阵列控制器tabTitlestabContent.但是当我在动态标签内容中发布带有HTML的表单时,我收到以下错误:

从客户端检测到潜在危险的Request.Form值

之前我遇到了这个问题,我的供应商的描述字段.经过一番研究,我看到我可以添加AllowHtml注释.

如何将相同的功能应用于动态内容?

ken*_*ner 9

而不是数组,tabTitletabContent以一种方式构建您的viewmodel,您可以将AllowHtmlAttribute每个单独的属性放在可以接收用户内容的位置,然后在您将视图绑定到的模型中包含这些属性的List

public class TabViewModel
{
    [AllowHtml]
    public string Title { get; set; }

    [AllowHtml]
    public string Content { get; set; }
}
Run Code Online (Sandbox Code Playgroud)