【问题标题】:How to use shared views but have buttons appear in one side but not the other?如何使用共享视图但按钮出现在一侧而不是另一侧?
【发布时间】:2015-12-16 04:47:51
【问题描述】:

所以我创建并完成了一个视图。 但我将创建另一个非常相似的视图(实际上实际上使用相同的屏幕),但有一些区别。您可以将其视为一个“管理”屏幕,其中存在诸如在记录中为我的数据库创建新项目、编辑或删除记录等 crud 功能。

有没有一种方法可以让某些按钮或 html 标签出现在一个区域而不能出现在另一个区域?在当前的“共享”屏幕中,我使用数据表来显示表格,并使用 stringBuilder 在我的 .cs 文件中构建 html 标记。 但是我如何创建编辑和删除等按钮是使用标签。如何调用它是通过 javascript 函数和调用我的方法的 ajax 调用,该方法在字符串生成器中生成 html 标记。

var htmlTable = new StringBuilder();
htmlTable.Append{<table><Tr><td><img src='/images/Edit.png'>...

我还有一个单独的按钮,它不是 html 构建器中的内联标记。

<input type="button" id="btnAddRecipeLink" value="New Link" data-toggle="modal" data-target="#myModal" />

另外,在我的 _layout.cshtml 文件中,我也有用于点击查看“管理部分”的链接

<ul class="dropdown-menu" role="menu">
<li>
     @Html.ActionLink("Recipe Management", "Index", "Recipe")
</li>
</ul>

其中“索引”是 Views 文件夹中我的 Recipe 文件夹中已完成视图的名称。

如果这真的不可能或没有意义,最好和合乎逻辑的方法是为“管理”部分创建另一个控制器和模型吗?

【问题讨论】:

    标签: c# sql entity-framework razor model-view-controller


    【解决方案1】:

    在我们的应用程序中,当我们想将同一个视图用于不同目的时,我们通过该页面的 ViewModel 中的某些属性来控制共享视图中不同的元素。

    例如,我们在 ViewModel 中有一个属性 IsAdministrator,在 Admin 的情况下,它被设置为 true,在 razor 视图中我们如下所示:

    @{
    if(Model.IsAdministrator)
    {
       @: <a href='edit'>Admin can edit</a>
    }
    else
    {
       @: <span>You are not an admin!</span>
    }
    }
    

    所以我们只需在同一个控制器操作或基于规则的某个处理器方法中设置此属性...

    【讨论】:

      猜你喜欢
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2020-12-06
      • 1970-01-01
      相关资源
      最近更新 更多