【发布时间】:2015-04-21 07:08:58
【问题描述】:
我正在使用 MVC4 和淘汰赛构建一个演示应用程序。我在数据库中有以下表格
Create Table Provider
(
[ProviderId] [int] IDENTITY(1,1) Primary Key NOT NULL,
[FirstName] [varchar](40) NOT NULL,
[LastName] [varchar](40) NOT NULL,
[SSN] [varchar](15) NOT NULL,
[NPI] [varchar](15) NOT NULL,
[ProviderStatus] [bit] NOT NULL,
)
Create table ProviderDetails
(
[ProviderDetailsID] [int] IDENTITY(1,1) Primary Key NOT NULL,
[Certification] [varchar](40) NOT NULL,
[Specialization] [varchar](40) NOT NULL,
[TaxonomyCode] [varchar](40) NOT NULL,
[ContactNumber] [varchar](15) NOT NULL,
[ContactEmail] [varchar](40) NOT NULL,
[ProviderId] [int] FOREIGN KEY REFERENCES Provider(ProviderId) Not NULL
)
实体如下(这些不是从DB生成的。我没有使用EF)。如有错误请指出。我对这里的列表有疑问。
public class Provider
{
public int ProviderId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string SSN { get; set; }
public string NPI { get; set; }
public List<ProviderDetails> ProviderDetailsList { get; set; }
}
public class ProviderDetails
{
public int ProviderDetailsID { get; set; }
public string Certification { get; set; }
public string Specialization { get; set; }
public string TaxonomyCode { get; set; }
public string ContactNumber { get; set; }
public string ContactEmail { get; set; }
public int ProviderId { get; set; }
public Provider Provider { get; set; }
}
我的 HTML 页面是
<div class="container">
<h1 class="col-sm-offset-3">Enter Provider Details:</h1>
<br />
<form class="form-horizontal" role="form" id="providerDetailsForm" method="post">
<div class="form-group">
<label class="col-sm-2 control-label labelfont">First Name:</label>
<div class="col-sm-6">
<input type="text" class="form-control" placeholder="Enter the First Name" id="firstName" data-bind="value: firstName, event: { keypress: allowOnlyAlphabets }" name="firstName" maxlength="20">
<span class="col-sm-4 error"></span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label labelfont">Specialization:</label>
<div class="col-sm-6">
<select class="form-control" id="specialization" name="specialization" data-bind="value: specialization, options: specializationArray, optionsCaption: 'Select a Specialization'">
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label labelfont">Contact Number:</label>
<div class="col-sm-6">
<input type="text" class="form-control" data-bind="value: contactNumber, event: { keypress: allowOnlyNumbers, blur: function () { formatPhoneNumber(contactNumber); changeContactNumberValidationRules() } }" name="contactNumber" placeholder="Enter the Contact Number" id="contactNumber" maxlength="13" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label labelfont">Email Address:</label>
<div class="col-sm-6">
<input type="text" class="form-control" name="contactEmail" data-bind="value: contactEmail" placeholder="Enter your email address" id="contactEmail">
</div>
</div>
</form>
</div>
这里的绑定来自以前的单个视图模型。但现在,我想我必须为 2 个实体创建 2 个视图模型。我已经阅读了主视图模型,但我不确定如何实现它到我的演示应用程序,或者即使需要实现 masterviewmodel。任何关于如何创建 2 个单独的视图模型并绑定它们的指导将不胜感激。谢谢大家。
【问题讨论】:
-
Provider和ProviderDetails之间有一对多的关系吗?
-
不,它是一对一的,这就是为什么我对列表有疑问
-
有什么理由他们不在同一张桌子上?
-
他们之前在同一个表中。有一个表Provider。然后在应用程序中需要两个表之间有父子关系。这就是我改变它的原因。
-
在这种情况下有点没用,但它仍然有效。将 Product 模型作为主视图模型,并将 ProductDetails 设置为 Product 模型的属性,然后绑定 Product 模型。然后,您可以在细节上使用 Knockout 的 foreach 绑定。
标签: c# asp.net-mvc-4 knockout.js