我一直关注this文章,用于从数据库呈现视图,然后使用VirtualPathProvider
类来注册路由。
我的主要要求是,我希望根据条件渲染相同的视图,以便在编辑模式下打开一次,在只读模式下打开一次。
现在我试图实现这一点,因为我不想更改视图两次(一次用于编辑,一次用于readonly)如果我必须更改页面,则意味着添加新的 文本框 (编辑模式)或 标签 ( readonly 模式)然后它意味着实际管理当应用程序扩展并变得更加复杂时,两个或更多视图。
将数据库中的视图保存为字符串是我在互联网上找到的选项,但是无法在c#中操作字符串以添加 文本框 或 标签 动态。
所以有可能实现这种行为,我知道我们很多人不想管理多个视图,如果我们在文件系统中添加视图作为文件,我们也会有超过拥挤的解决方案文件夹。
欢迎任何形式的意见(帮助或批评)。
修改
使用If Else
代码块将导致管理多个html的相同效果
编辑2
代码?,我只想知道实现,而不是在DB表中保存硬编码的视图,我希望能够根据条件更改视图。
所以我的要求不仅是为数据库提供视图服务,而且能够根据需要更改视图,因此使其非常动态。
我正在为此提供一个小实现。没有VirtualPathProvider
类
让我们保持简单,我使用EF
查询数据库并将Model
传递给View
。
所以在Controller
我正在使用以下查询。
public ActionResult DynamicView(int id)
{
var abc= db.DummyTable.Where(c => c.ID == id).ToList();
return View(abc);
}
然后在View
@model IEnumerable<Project.Models.DummyTable>
@foreach (var item in Model)
{
<tr>
<td>
<label>@item.Name</label>
</td>
<td>
<label>@item.Class</label>
</td>
<td>
<label>@item.RollNumber</label>
</td>
</tr>
}
所以相反在表中保存我的整个视图,我希望视图能够在编辑模式中进行更改,就像我想要 Textboxes 而不是 标签 。
谢谢