淘汰赛和ASP.NET MVC多页 - javascript

我是淘汰的新手,在应用绑定和多个视图时,我不知道如何使用ASP.NET MVC最好地构造淘汰。我了解您如何在单页应用程序中做到这一点。但是我的应用程序包含多个服务器端控制器和多个视图。每个视图都可以具有自己的剔除视图模型。

我何时以及如何应用绑定?我最后一次加载所有JavaScript,这意味着我无法内联调用viewmodel。

使用某种MasterViewModel然后在我的视图中使用with绑定是一个好习惯吗(这是我唯一能想到的解决方案)?

参考方案

为每个ASP.NET视图创建一个绑定到mvc视图的ViewModel。我将用ASP.NET MVC模型命名ViewModel。

ASP.NET MVC模型:

public class LoginViewModel
{
    [Required]
    [Display(Name = "Email")]
    [EmailAddress]
    public string Email { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

剔除ViewModel:

var LoginViewModel = function () {
    var self = this;

    self.email = ko.observable();
    self.password = ko.observable();
    self.rememberMe = ko.observable();

    self.login = function () {
        ...
    }
};

我通常使用ASP.NET捆绑包捆绑所有viewmodels .js,然后在每个MVC视图中绑定Knockout视图模型。

$(function() {
    ko.applyBindings(new LoginViewModel());
});

如果您需要在第一次加载时从mvc模型中填充模型,我将使用json.net序列化为json,然后将其传递给ViewModel承包商:

var loginModel = '@JsonConvert.SerializeObject(Model)';

$(function() {
    ko.applyBindings(new LoginViewModel(loginModel));
});

然后在剔除ViewModel中,您可以从传递给承包商的模型中填充可观察对象:

var LoginViewModel = function (loginModel) {
    var self = this;

    self.email = ko.observable(loginModel.email);
    self.password = ko.observable(loginModel.password);
    self.rememberMe = ko.observable(loginModel.rememberMe);

为了将驼峰式大小写用于json,我将json.net更改为序列化为camlecase。

如果您具有类似于SPA的复杂页面(例如,具有多个步骤的表单页面,本质上是具有多个视图状态的页面),则可以使用supercool所介绍的MasterViewModel。

ddl在服务器中未更新-asp.net - javascript

我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……

ASP.NET-如何更改JSON序列化的方式? - javascript

我正在使用ASP.NET通过以下查询返回Json文件:public ActionResult getTransactionTotals(int itemID) { DBEntities db = new DBEntities(); var query = from trans in db.Transactions // Linq query removed …

javascript popupwindow之后的行如何工作? - javascript

好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…

ASP.NET MVC中应为DataTable返回哪种数据? - javascript

我想为DataTable中的每个页面创建动态加载信息。我正在尝试遵循以下示例:https://www.datatables.net/manual/server-sidehttps://www.datatables.net/manual/data来自示例的代码:$('#example').DataTable( { serverSide: t…

从javascript访问模型属性 - javascript

我有一个ASP.NET MVC项目,并且试图从视图(.cshtml)和javascript函数中访问模型属性(isNew),所以我在下面执行但没有成功:@model My.Common.DTOs.MyDTO function Initizalize() { if ([email protected]) { DoSomeStuff(); // call another…