Asp.net mvc 如何将对象传递给已被击出js绑定的控制器

Asp.net mvc 如何将对象传递给已被击出js绑定的控制器,asp.net-mvc,knockout.js,Asp.net Mvc,Knockout.js,这是我的http post控制器: [HttpPost] public ActionResult Create(Employee p) { if (ModelState.IsValid) { Employee employee = EmployeeDataAccess.AddToDatabase(p); return RedirectToAction("Index", "Hr"); } return View(); } 这是我

这是我的http post控制器:

[HttpPost]
public ActionResult Create(Employee p)
{
    if (ModelState.IsValid)
    {
        Employee employee = EmployeeDataAccess.AddToDatabase(p);

        return RedirectToAction("Index", "Hr");
    }

    return View();
}
这是我的看法

@model TimeInTimeOut.Models.Employee

@{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Create</h2>

<table>
    <tr>
        <td><input type="text" placeholder="LastName" data-bind="value: lastName"/></td>
    </tr>
    <tr>
        <td><input type="text" placeholder="FirstName" data-bind="value: firstName"/></td>
    </tr>
    <tr>
        <td><input type="text" placeholder="MiddleName" data-bind="value: middleName"/></td>
    </tr>
    <tr>
        <td><input type="button" value="Save To Database" data-bind="click: saveToDb"/></td>
    </tr>
</table>

@section Scripts
     {
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/knockout")
    @Scripts.Render("~/Knocks/EmployeeVm.js")
}
我不知道如何将这些字段传递到一个对象中以创建(Employee p)。请详细解释。我对js和淘汰js是新手。另外,当最终用户还没有在LastName和FirstName中键入任何内容时,如何使用knockout禁用按钮,比如,它将发送一个警报,提示这些字段不能为空,并且一旦最终用户在字段中输入一些文本,这些字段将消失

我不知道如何将这些字段传递到一个对象中以创建(Employee p)

为了回答这个问题,让我们假设您的
员工
如下-

public class Employee
{
    public string EmployeeId {get; set;}
    public string FirstName {get; set;}
    public string MiddleName {get; set;}
    public string LastName {get; set;}
}
为了让控制器方法(一种
HttpPost
方法)知道您正在传递一个
JSON
格式的
Employee
,您需要稍微修改方法的签名,如下所示-

public ActionResult Create([FromBody] Employee p)
这表明您需要的
员工
请求主体
的一部分,而不是
查询字符串

另外,当最终用户还没有在LastName和FirstName中键入任何内容时,如何使用knockout禁用按钮,比如,它将发送一个警报,提示这些字段不能为空,并且一旦最终用户在字段中输入一些文本,这些字段将消失

您需要为这些字段设置
required
字段-

lastName: ko.observable('').extend({required: true}),
firsName: ko.observable('').extend({required: true})
并在这些可见物周围放置一个按钮,以检查按钮是否应启用-

var canSubmit = ko.computed(function() {
    return (self.lastName.isValid() && self.firstName.isValid());
});
<td><input type="button" value="Save To Database" data-bind="click: saveToDb, enable: canSubmit"/></td>
此外,要计算用户输入的
firstName
lastName
的值,您可以通过向绑定添加“valueUpdate”属性来告诉knockout执行此操作-

然后使用
enable
绑定来控制是否应该启用-

var canSubmit = ko.computed(function() {
    return (self.lastName.isValid() && self.firstName.isValid());
});
<td><input type="button" value="Save To Database" data-bind="click: saveToDb, enable: canSubmit"/></td>

我对js和淘汰js是新手

有一个非常好的击倒教程