将MVC连接到knockout.js

将MVC连接到knockout.js,knockout.js,asp.net-core,asp.net-core-mvc,Knockout.js,Asp.net Core,Asp.net Core Mvc,我有一个简单的MVC模型,名为邀请,它看起来像这样: public class Invitation { public string InvitedUserDisplayName { get; set; } public string InvitedUserEmailAddress { get; set; } } 我想在视图中使用knockout.js创建一个用户界面。在这里,用户可以输入两个字段的值,并按下发送邀请的按钮(在我的控制器中

我有一个简单的MVC模型,名为
邀请
,它看起来像这样:

    public class Invitation
    {
        public string InvitedUserDisplayName { get; set; }
        public string InvitedUserEmailAddress { get; set; }
    }
我想在
视图中使用knockout.js创建一个用户界面。在这里,用户可以输入两个字段的值,并按下发送邀请的按钮(在我的控制器中调用邀请方法,传递用户刚刚指定的
邀请
对象)

我找不到任何针对初学者的可靠文档来解释这一基本过程。到目前为止,我的文档有点混乱:

@Model = ViewModel.Invitation

<script src="~/lib/knockout/dist/knockout.js"></script>

@model Invitation
<form asp-controller="Home" asp-action="SendInvite" method="post">
    Email: <input asp-for="InvitedUserEmailAddress" data-bind="value: invitedUserDisplayName"/> <br />
    Display Name: <input asp-for="InvitedUserDisplayName" data-bind="value: invitedUserEmailAddress"/> <br />
    <button data-bind="click: sendInvitation">Send Invite</button>
</form>

<script type="text/javascript">
    var viewModel = {
        invitedUserDisplayName: @Model.InvitedUserDisplayName,
        invitedUserEmailAddress @Model.InvitedUserEmailAddress

        this.sendInvitation = function () {
            //call controller action, passing the newly created Invitation. 
        }
    };

    ko.applyBindings(viewModel);
</script>
@Model=ViewModel.Invitation
@模特邀请
电子邮件:
显示名称:
发送邀请 var viewModel={ invitedUserDisplayName:@Model.invitedUserDisplayName, invitedUserEmailAddress@Model.invitedUserEmailAddress this.sendInvestment=函数(){ //调用控制器操作,传递新创建的邀请。 } }; 应用绑定(视图模型);
我会推荐类似的方法(还有其他方法)

在控制器中,将对象转换为JSON(我使用JSON.Net库,因为它是最好的),有关更多信息,请参阅

public ActionResult MyAction()
{
   var viewModel;
   var objectIWantToUse;

   //this is a string!
   viewModel.objectIWantToUseJson = JsonConvert.SerializeObject(objectIWantToUse);

   return View(viewModel);
}
那么在你看来,

@Model = viewModel

<script src="~/lib/knockout/dist/knockout.js"></script>

<div id="someDOM" data-modeljson="@viewModel.objectIWantToUseJson">
...

将您的模型转换为Json,在某个地方编写它,然后在客户端使用javascript读取它format@Liam你知道有没有一些关于如何做这一切的超基础文档吗?从头到尾。我对前端开发非常陌生。我已经添加了一些简短的代码示例,说明你需要做什么考虑一下。这不是很广泛,因为主题相当广泛,但它有望为您指出正确的方向。谢谢,应该能够找出其余的:)viewModelInJson来自哪里?我误解了您的问题@Green_qaue
viewModelFromJson
只是一个用于保存从json创建的对象的变量?
var domElement = document.getElementById('someDOM');
var viewModelFromJson = JSON.Parse(domElement.dataset.modeljson);

ko.applyBindings(viewModelInJson);