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)
在我看来,我有动态添加/删除选项卡标题和选项卡描述的字段的功能.它们传递给通过阵列控制器tabTitles和tabContent.但是当我在动态标签内容中发布带有HTML的表单时,我收到以下错误:
从客户端检测到潜在危险的Request.Form值
之前我遇到了这个问题,我的供应商的描述字段.经过一番研究,我看到我可以添加AllowHtml注释.
如何将相同的功能应用于动态内容?
而不是数组,tabTitle并tabContent以一种方式构建您的viewmodel,您可以将AllowHtmlAttribute每个单独的属性放在可以接收用户内容的位置,然后在您将视图绑定到的模型中包含这些属性的List
public class TabViewModel
{
[AllowHtml]
public string Title { get; set; }
[AllowHtml]
public string Content { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1211 次 |
| 最近记录: |