gpt4 book ai didi

javascript - 在 MVC 3 中生成 Knockout 标记

转载 作者:行者123 更新时间:2023-12-04 08:25:41 25 4
gpt4 key购买 nike

我们目前正在为我们的 MVC 客户端编写一个新的基础设施,我们正在努力使开发人员不需要正确的 Javascript(当前的开发池主要是基于桌面的)

到目前为止,我为我们的 knockout 脚本所做的是创建一个扩展方法,该方法基本上使用反射基于模型生成所有 knockout 的东西。这对于没有计算值的简单模型非常有效很好。

例如,假设我们有这门课

public class AppViewModel
{
public string FirstName {get; set;}
public string LastName {get; set;}
}

将生成以下内容并将其添加到 View 中

  function AppViewModel() {
this.firstName = ko.observable('Bob');
this.lastName = ko.observable('Smith');
}

我真正喜欢做的是支持模型的计算值..但我就是想不出办法去做

所以

    public FullName()
{
return this.FirstName + " " + this.LastNAme
}

会产生类似的东西

 this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);

所以只是为了说明 - 我正在尝试做的是根据我的模型生成计算值。

谢谢你的帮助

干杯。

最佳答案

除了 Pavel 上面提到的内容,还有一个很好的例子向“T”展示了您的场景:

http://knockoutmvc.com/HelloWorld

这是页面的转录:

型号:

public class HelloWorldModel
{
public string FirstName { get; set; }
public string LastName { get; set; }

public Expression<Func<string>> FullName()
{
return () => FirstName + " " + LastName;
}
}

Razor :

@using PerpetuumSoft.Knockout
@model KnockoutMvcDemo.Models.HelloWorldModel
@{
var ko = Html.CreateKnockoutContext();
}
<p>First name: @ko.Html.TextBox(m => m.FirstName)</p>
<p>Last name: @ko.Html.TextBox(m => m.LastName)</p>
<h2>Hello, @ko.Html.Span(m => m.FullName())!</h2>

@ko.Apply(Model)

Controller :

public class HelloWorldController : BaseController
{
public ActionResult Index()
{
InitializeViewBag("Hello world");
return View(new HelloWorldModel
{
FirstName = "Steve",
LastName = "Sanderson"
});
}
}

自动生成的 Html:

<p>
First name:
<input data-bind="value : FirstName" /></p>
<p>
Last name:
<input data-bind="value : LastName" /></p>
<h2>
Hello, <span data-bind="text : FullName"></span>!</h2>

<script type="text/javascript">
var viewModelJs = { "FirstName": "Steve", "LastName": "Sanderson" };
var viewModel = ko.mapping.fromJS(viewModelJs);
viewModel.FullName = ko.computed(function () {
try {
return this.FirstName() + ' ' + this.LastName();
}
catch (e) { return null; };
}, viewModel);
ko.applyBindings(viewModel);
</script>

关于javascript - 在 MVC 3 中生成 Knockout 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11449711/

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