模型没有绑定到asp.net MVC中的视图

时间:2015-01-13 10:50:08

标签: c# asp.net-mvc knockout.js

我正在尝试在表格中显示提供商列表。获取提供商列表的代码如下

     public ActionResult Index()
    {
        DAL2 dal = new DAL2();
        Provider patientlist = new Provider();
        List<Provider> providers = dal.GetListofProviders.ToList();
        return View(providers);
    }

上面的代码工作正常。我按预期获得了提供者列表。

视图中的HTML代码如下

  @model IEnumerable<ProviderDemo.Models.Provider>

  @{
     ViewBag.Title = "ProviderList";
   }
  <head>
     <title>LIST OF PROVIDERS</title>
  </head>
  <body>
     <table class="table table-striped table-bordered table-hover">
         <tr>     
           <th>Provider Type</th>
            <th>First Name</th>
            <th>Last Name</th>
            <th>Certification</th>
             <th>Specialization</th>
              <th>SSN</th>
              <th>Facility Name</th>
              <th>Contact No</th>
             <th>Contact Email</th>
              <th></th>  
        </tr>  
              <tbody data-bind="foreach: viewmodel">
            <tr>
              <td class="col-lg-2" data-bind="text: ProviderType"></td>
              <td class="col-lg-1" data-bind="text: FirstName"></td>
              <td class="col-lg-1" data-bind="text: LastName"></td>
              <td class="col-lg-1" data-bind="text: Certification"></>
              <td class="col-lg-1" data-bind="text: Specialization"></td>
              <td class="col-lg-1" data-bind="text: SSN"></td>
              <td class="col-lg-4" data-bind="text: FacilityName"></td>
              <td class="col-lg-4" data-bind="text: ContactNumber"></td>
              <td class="col-lg-1" data-bind="text: ContactEmail"></td>
              <td><a class="btn btn-default" id="del" onclick = "return confirm('Are you sure, you want to delete');" data-bind="attr: { href: '/ProviderRegister/Delete/' + ProviderID }"> Delete        </a>
              </td>
          </tr> 
      </tbody>           
    </table>
     </body>

我的提供者类如下:

  public class Provider
{
    public int    ProviderID { get; set; }
    public string ProviderType { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Certification { get; set; }
    public string Specialization { get; set; }
    public string SSN { get; set; }
    public string ContactNumber { get; set; }
    public string ContactEmail { get; set; }
    public string FacilityName { get; set; }
}

提供商视图模型

  var Provider =
          {
              ProviderID:ko.observable(""),
              ProviderType: ko.observable(""),
              FirstName: ko.observable(""),
              LastName: ko.observable(""),
              Certification: ko.observable(""),
              Specialization: ko.observable(""),
              SSN: ko.observable(""),
              ContactNumber: ko.observable(""),
              ContactEmail: ko.observable(""),
              FacilityName: ko.observable(""),
          }
            ko.applyBindings(Provider);

列表没有显示在表格中。模型的html顶部似乎有一个错误。我不明白为什么。我在这里做错了什么?请指导我正确的方向。

非常感谢所有帮助人员,但我之前犯了一个错误。在Index操作中,我看到提供者列表但我在视图中没有得到任何数据。所以,我在控制器中有数据但是不在视图中。

1 个答案:

答案 0 :(得分:1)

如果你有一个填充的模型,你需要从中获取数据到你的淘汰模型。因此,要么使用System.Web.Helpers.Json.Encode(),要么在视图中创建自己的JSON。

然后将该数据加载到您的挖空视图模型中。

var data = @Json.Encode(Model);

var ViewModel = function(data) {
    var self = this;

    self.Providers = ko.observableArray(data);
};

var viewmodel = new ViewModel(data);
ko.applyBindings(viewmodel);

然后在你的foreach中,使用Providers而不是viewmodel