我正在编写我的第一个 MVC 应用程序 (MVC4)。其中很多是使用 VS2010 中出色的 Razor 工具生成的,但现在我碰壁了,我觉得我不了解一些基本的东西。
在我的应用程序中,
- 一个用户可以访问多个客户端。
- 我有一个客户端控制器和视图。
- 我有一个用户控制器和视图(简单成员的 UserProfile 的扩展版本,使用 User.Identity 填充)。
我想做的是让用户编辑客户的详细信息,并在同一页面上编辑他们自己的帐户详细信息。
我尝试使用 Html.Partial 将 UserProfile 视图添加到 Client 视图,但它试图将 UserProfile 视图传递给 Client 模型。
如何让 Client 视图调用 UserProfile控制器,以便它可以读取 User.Identity 并返回正确的 UserProfile 视图?
我尝试将其作为附加了客户端和用户配置文件类的视图模型,并在一个屏幕上完成所有操作,但它拒绝在提交时向控制器发送值。
客户端视图:
@model MyProject.Client
<div>
@Html.Partial("_AcctDetailsPartial")
</div>
<div>
@using (Html.BeginForm())
{
.
.
.
@Html.HiddenFor(model => model.ClientID)
{
.
.
.
<client fields>
{
.
.
.
<div class="form-actions">
<button type="submit" name="ButtonName" value="Company" class="btn blue"><i class="icon-ok"></i> Save</button>
<button type="button" class="btn">Cancel</button>
</div>
}
</div>
用户资料视图:
@model Surecall.UserProfile
<div style="height: auto;" id="accordion1-1" class="accordion collapse">
@using (Html.BeginForm())
{
<h3 class="form-section">Personal Info</h3>
<label class="control-label">First Name</label>
@Html.TextBoxFor(m => m.FirstName, new { @class = "m-wrap span8", @id="FirstName" })
<label class="control-label">Last Name</label>
@Html.TextBoxFor(m => m.Surname, new { @class = "m-wrap span8" })
<label class="control-label">Phone Number</label>
@Html.TextBoxFor(m => m.Mobile, new { @class = "m-wrap span8" })
<label class="control-label">Email</label>
@Html.TextBoxFor(m => m.Email, new { @class = "m-wrap span8" })
<label class="control-label">Position</label>
@Html.TextBoxFor(m => m.Occupation, new { @class = "m-wrap span8" })
<label class="control-label">Interests</label>
@Html.TextBoxFor(m => m.Interests, new { @class = "m-wrap span8" })
<div class="form-actions">
<button type="submit" name="SaveLoginDetails" value="SaveUser" class="btn green"><i class="icon-ok"></i> Save</button>
<button type="button" class="btn">Cancel</button>
</div>
}
</div>