gpt4 book ai didi

c# - 每个viewModel的knockout.js MVC按钮 Action 更改

转载 作者:行者123 更新时间:2023-12-03 10:46:00 24 4
gpt4 key购买 nike

我目前在我的MVC应用程序之一中使用 knockout js。
布局模板如下所示:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
<div class="container-fluid head-content">
<div class="row">
<div class="col-xs-6">
<img class="img-responsive" src="~/Images/logo.jpg" />
</div>
<div class="col-xs-3">
<a class="block" href="#" style="display: none" data-bind="visible: showBack, click: goBack">
<div class="block-text">
<h4>Back</h4>
</div>
</a>
</div>
<div class="col-xs-3">
<a class="block" href="#" style="display: none" data-bind="visible: showHome, click: navigateToHome">
<div class="block-text">
<h4>Home</h4>
</div>
</a>
</div>
</div>
</div>

<div class="container-fluid body-content">
@RenderBody()
</div>

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>

</html>

我的 索引部分看起来像这样:
@Html.Partial("_Login")
@Html.Partial("_Home")
@Html.Partial("_CutLengths")
@Html.Partial("_MoveStock")

@section scripts {
@Scripts.Render("~/bundles/knockout")
@Scripts.Render("~/bundles/app")
}

我的问题是,根据我所在的 页面,我想使用“后退”按钮转到另一个 页面。例如,如果我在 cutLengths 上,我希望后退按钮将 带到

我的 app.viewmodel.js 具有如下所示的方法:
// Other operations
self.addViewModel = function (options) {
var viewItem = {},
navigator;

// Add view to AppViewModel.Views enum (for example, app.Views.Home).
self.Views[options.name] = viewItem;

// Add binding member to AppViewModel (for example, app.home);
self[options.bindingMemberName] = ko.computed(function () {
if (self.view() !== viewItem) {
return null;
}

return new options.factory(self, dataModel);
});

if (typeof (options.navigatorFactory) !== "undefined") {
navigator = options.navigatorFactory(self, dataModel);
} else {
navigator = function () {
self.view(viewItem);
};
}

// Add navigation member to AppViewModel (for example, app.NavigateToHome());
self["navigateTo" + options.name] = navigator;
};

我想做的是从当前正在查看的 ViewModel 中传递一个字符串,当按下后退按钮时,它将知道将我定向到正确的 ViewModel

是否有可能做到这一点?

我希望我已经很好地解释了,如果我没有请问,我会努力的:D

最佳答案

您可以使用ViewData或ViewBag从 Controller 传递数据到 View 。因此,一种选择是仅向当前 View 模型和先前 View 模型的ViewBag添加一些动态属性。

ViewData 是对象的字典,这些对象使用字符串作为键进行存储和检索。

ViewBag 使用C#4中引入的动态功能。它允许对象动态地添加属性。我会用它来传递您的 View 模型状态。

两者都不提供编译时间检查,这是它们的优点,您可以添加任何所需的内容。话虽如此,在ViewBag和ViewData上使用强类型 View 模型始终是一个好习惯。

如果您希望在 View 模型中放置某些内容,而不是向ViewBag添加属性,则不必在每个 View 模型中添加另一个名为PreviousViewModel的属性,并在每次使用模型时填充它。

使用ViewBag或ViewData的示例

ViewData["LastViewModel"] = "CutLengths";
ViewBag.LastViewModel = "CutLengths";

在 View 中访问您的ViewBag没问题,它们具有全局范围。 ViewBag就像一个全局变量,您可以附加任何内容-因此我会明智地使用它们-也许某种类型的单例应用程序管理器会是更好的设计。

希望这可以帮助

关于c# - 每个viewModel的knockout.js MVC按钮 Action 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25875989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com