2012-11-23 32 views
0

型号:如何将对象字段绑定到文本框?

public class DishesModel 
{ 
    public Dish DishToAdd{get; set;} 
    public List<Dish> AllDishes{get; set;} 
    public List<Category> AllCategories{get; set;} 
    public List<Dish> SelectedDishes{get; set;} 

    public DishesModel() 
    { 
     DishToAdd = new Dish(); 
    } 

    public void AddDish() 
    { 
     if(DishToAdd!=null && !AllDishes.Contains(DishToAdd)) 
     { 
      AllDishes.Add(DishToAdd); 
      DishToAdd = null; 
     } 
    } 

    public void RemoveSelected() 
    { 
     AllDishes.RemoveAll(d=>SelectedDishes.Any(m=>m.Name==d.Name)); 
     SelectedDishes.Clear(); 
    } 

    public void SortDishes() 
    { 
     AllDishes.Sort(); 
    } 

} 

public class Dish:BaseEntity<Int32> 
{ 
    public virtual String Name{get; set;} 
    public virtual Decimal Price{get; set;} 
    public virtual String Description{get; set;} 
    public virtual IList<Category> Categories{get; set;} 
    public virtual IList<Complex> Complexs{ get; set;} 
} 

剃刀:

@{ 
    KnockoutContext<MyMenu.Models.DishesModel> ko = Html.CreateKnockoutContext(); 
} 

@{ 
    ViewBag.Title = "title"; 
} 

<h2>Work with dishes.</h2> 
@using(ko.Html.Form("AddDish", "Dishes", null, new{id="formDishes"})) 
{ 
    @ko.Html.ListBox(m => m.AllDishes, new {size = 15}, dish => dish.Name).SelectedOptions(m=>m.SelectedDishes) 
    @ko.Html.Button("Remove", "Remove", "Dishes").Enable(m => m.SelectedDishes.Count > 0) 
    @ko.Html.Button("Sort", "Sort", "Dishes").Enable(m => m.AllDishes.Count > 1) 
     <span>Name</span>   @ko.Html.TextBox(m=>m.DishToAdd.Name).ValueUpdate(KnockoutValueUpdateKind.KeyPress) 
     <span>Price</span> 
     @ko.Html.TextBox(m =>m.DishToAdd.Price).ValueUpdate(KnockoutValueUpdateKind.KeyPress) 
     <span>Description</span> 
     @ko.Html.TextBox(m => m.DishToAdd.Description).ValueUpdate(KnockoutValueUpdateKind.KeyPress) 
     <button type="submit" @ko.Bind.Enable(m => m.DishToAdd.Name.Length > 0)>Add</button> 

} 

<script type="text/javascript"> 
    $('#formDishes').ajaxForm(); 
</script> 

@ko.Apply(Model) 

控制器:

public ActionResult AddDish(DishesModel model) 
    { 
     model.AddDish(); 
     return Json(model); 
    } 

未被捕获的错误:无法解析绑定。 消息:TypeError:对象不是一个函数; 绑定值:值:DishToAdd()名称,valueUpdate: '按键' 淘汰赛2.2.0.js:5

我如何可以绑定DishToAdd.Name到文本框?

在此先感谢!

回答

0

尝试类型转换与串数据类型

+0

决定'使用(VAR子模型= ko.With(M => m.DishToAdd)) { 名称 @ subModel.Html.TextBox(米对象=> m.Name).ValueUpdate(KnockoutValueUpdateKind.KeyPress) 价格 @ subModel.Html.TextBox(M => m.Price).ValueUpdate(KnockoutValueUpdateKind.KeyPress) 说明 @ subModel.Html.TextBox (m => m.Description).ValueUpdate(KnockoutValueUpdateKind.KeyPress) }' – valik

相关问题