在Razor视图中覆盖变量

时间:2016-11-17 09:09:20

标签: javascript c# razor

最近使用剃须刀视图并欣赏任何建议。我在视图中有以下内容:

Script.Require("Accounts");
var o = sidePanel.Entities.ToString(WorkContext.CurrentUser, false);

var t = sidePanel.Entities.Title;
<text>
    <article class="widget-aside-right widget-accounts-side-widget widget">
        <accounts-side-widget @o title="@t" />
    </article>
</text>

和C#toString方法是:

public string ToString(IUser user, bool isOpenDynamic = true)
{
    // todo (tba 11/3/15): why is groups always included?
    string options = (AllAccounts ? " allaccounts" : string.Empty)
                     + (EntityGroups ? " groups" : string.Empty)
                     + (Balance ? " balance" : string.Empty)
                     + (Number ? " number" : string.Empty)
                     + " isOpen=" + (IsOpen && isOpenDynamic)
                     + (ClientCode ? " clientCode" : string.Empty)
                     + (BaseCurrency ? " baseCurrency" : string.Empty)
                     + " missingdatareportid=" + MissingDataReportId
                     + (ReportBook && user.HasPermission(PermissionType.ReportBook) ? " reportbook" : string.Empty)
                     + (AccountDetailPopup ? " details" : string.Empty);

    return options;
}

我无法更改后端中的变量,因为它会影响使用相同后端的许多其他客户端,但视图特定于此客户端。因此,我需要能够在视图中而不是在后端更改某个变量(isOpen)的值。

阅读有关使用Javascript和JQuery设置变量的信息,但看到这不是一个好主意。

1 个答案:

答案 0 :(得分:1)

为该特定客户端编写另一个版本的ToString(..)方法,调用它ToStringForABCInc(...)这样,您可以维护其他客户端的现有逻辑和视图,并具有特定的视图和逻辑有特殊要求的客户。