2017-09-23 24 views
0

这里是我的HTTP POST控制器:如何传递的目的是指已绑定由控制器淘汰赛JS

[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") 
} 

,这里是我的淘汰赛EmployeeVm .js:

$(function() { 
    ko.applyBindings(EmployeeVm); 

}); 

var EmployeeVm = { 
    employeeId: ko.observable(0), 
    lastName: ko.observable(''), 
    firsName: ko.observable(''), 
    middleName: ko.observable(''), 

    saveToDb: function() { 
     var self = this; 

     $.ajax({ 
      url: '/Employee/Create', 
      type: 'post', 
      dataType: 'json', 
      data: ko.toJSON(this), 
      contentType: 'application/json', 
      success: function(data) { 
       alert("Successful Employee Insert"); 
      } 
     }); 

    } 
} 

我不知道如何将这些字段传递给Create(Employee p)的一个对象。请详细解释。我是新来的js和击倒js。另外,如何使用敲除来禁用按钮,而终端用户尚未输入任何内容给姓氏和名字,例如,它会发送一个警告,表明这些字段不能为空,并且一旦最终用户把一些文字放到字段中?

回答

1

我不知道如何通过这些领域进入一个对象来创建(员工P)

要回答这个问题,让我们假设Employee看起来像这样 -

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) 

它告诉了Employee你需要的是Request body,而不是Query string的一部分。

还有,我怎么能利用基因敲除,而最终用户没有输入任何的姓氏和名字仍然一样,它会发出警报,这些字段不能为空,并且将禁用按钮最终用户将一些文本添加到字段后会消失吗?

你需要把requiredvalidation这些字段 -

lastName: ko.observable('').extend({required: true}), 
firsName: ko.observable('').extend({required: true}) 

并提出解决这些观测一个computed检查按钮应启用 -

var canSubmit = ko.computed(function() { 
    return (self.lastName.isValid() && self.firstName.isValid()); 
}); 

而且,为了评估这个计算结果,当用户输入firstNamelastName的值时,可以通过添加来告诉淘汰赛做到这一点荷兰国际集团一个 'valueUpdate' 属性您绑定 -

然后使用enable结合来控制是否应该启用 -

<td><input type="button" value="Save To Database" data-bind="click: saveToDb, enable: canSubmit"/></td> 

我是新来的JS和JS淘汰赛。

有淘汰赛一个非常好的教程here