我有一张 table ,上面的每个项目都有一个状态或状态,根据这个状态,您可以购买一个项目或将其设置在等待列表中。

为此,我在 Razor View 中有一个 @if 语句,我在其中检查状态,然后有条件地选择要为适当操作呈现的按钮。

我在 session 和角色的其他 View 中有一些类似的逻辑。

这是一个好习惯吗?还有其他方法可以做到吗?

@if( @item.status == 1 ) {
     <a class="btn btn-default" href="Items/Buy/@item.id">Buy</a>
} else if ( item.status == 2 ) {
    <a class="btn btn-default" href="Items/SetList/@item.id">Add To List</a>
}

最佳答案

这并不是世界上最糟糕的事情,因为它被用来在 View 中显示元素。但是,我会为 HtmlHelper 制作一个扩展方法来呈现您尝试创建的操作链接。就像是:

public static class HtmlHelperExtensions
{
    public static HtmlString RenderStatus(this HtmlHelper helper, ItemModel item)
    {
        if (item.status == 1)
        {
            return helper.ActionLink("Buy", "Buy", "Items", new { @class = "btn btn-default" });
        }

        if (item.status == 2)
        {
            return helper.ActionLink("Add To List", "SetList", "Items", new { id = item.Id }, new { @class = "btn btn-default" });
        }

        return new MvcHtmlString("");
    }
}

那么在你看来,你需要做的就是调用
@Html.RenderStatus(item)

关于asp.net-mvc - 考虑逻辑是不是不好的做法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38284641/

10-12 01:30