gpt4 book ai didi

asp.net-mvc-3 - 在 MVC3 中创建由其他模型的对象组成的 View 模型

转载 作者:行者123 更新时间:2023-12-04 05:30:21 27 4
gpt4 key购买 nike

我有一个模型和该模型的可枚举项,我将它们放在 asp.net mvc3 中的 View 模型中,就像这样。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;


namespace FuelPortal.Models.DBModels
{
public class UserDBModel
{

public int userId { get; set; }

[Required, Display(Name = "User Name")]
public string userName { get; set; }

[Required, Display(Name = "Password")]
public string password { get; set; }

[Required, Display(Name = "First Name")]
public string firstName { get; set; }

[Required, Display(Name = "Last Name")]
public string lastName { get; set; }

[Required, Display(Name = "Email")]
public string email { get; set; }

[Display(Name = "Phone")]
public string phone { get; set; }

[Display(Name = "Account Expiration Date(Optional)")]
public DateTime expireDate { get; set; }

[Display(Name = "Password Expiration Date")]
public DateTime passwordExpireDate { get; set; }

[Display(Name = "Last Date Modified")]
public DateTime DateModified { get; set; }

}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FuelPortal.Models.DBModels;

namespace FuelPortal.Models.ViewModels
{
public class UserMaintenanceViewModel
{

public UserDBModel user = new UserDBModel();
public List<UserDBModel> userList = new List<UserDBModel>();
}
}

现在我强输入一个 View 来使用 View 模型。
@model FuelPortal.Models.ViewModels.UserMaintenanceViewModel  
<div class="frmBG">
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "wrapperData" }))
{

<h5>Create New User</h5>
<br />
<table cellpadding="2" cellspacing="10" border="0">
<tr><td>
<div class="editor-label">
@Html.LabelFor(model => model.user.userName)
</div></td><td>

<div class="editor-field">
@Html.EditorFor(model => model.user.userName)
@Html.ValidationMessageFor(model => model.user.userName)
</div></td></tr>

<tr><td>
<div class="editor-label">
@Html.LabelFor(model => model.user.password)
</div></td><td>
<div class="editor-field">
@Html.PasswordFor(model => model.user.password)
@Html.ValidationMessageFor(model => model.user.password)
</div></td></tr>

<tr><td>
<div class="editor-label">
@Html.LabelFor(model => model.user.firstName)
</div></td><td>
<div class="editor-field">
@Html.EditorFor(model => model.user.firstName)
@Html.ValidationMessageFor(model => model.user.firstName)
</div></td></tr>

<tr><td>
<div class="editor-label">
@Html.LabelFor(model => model.user.lastName)
</div></td><td>
<div class="editor-field">
@Html.EditorFor(model => model.user.lastName)
@Html.ValidationMessageFor(model => model.user.lastName)
</div></td></tr>

<tr><td>
<div class="editor-label">
@Html.LabelFor(model => model.user.email)
</div></td><td>
<div class="editor-field">
@Html.EditorFor(model => model.user.email)
@Html.ValidationMessageFor(model => model.user.email)
</div></td></tr>

<tr><td>
<div class="editor-label">
@Html.LabelFor(model => model.user.phone)
</div></td><td>
<div class="editor-field">
@Html.EditorFor(model => model.user.phone)
@Html.ValidationMessageFor(model => model.user.phone)
</div></td></tr>

<tr><td>
<div class="editor-label">
@Html.LabelFor(model => model.user.expireDate)
</div></td><td>
<div class="editor-field">
@Html.EditorFor(model => model.user.expireDate)
@Html.ValidationMessageFor(model => model.user.expireDate)
</div></td></tr>

<tr><td></td><td>
<p>
<input type="submit" value="" class="create" /><input type="button" value="" class="close_tab"/>
</p></td></tr>
</table>
}
</div>

由于某种原因,它不会在 View 模型中填充对象。因此,当我创建发布操作时(UserMaintenanceViewModel 模型)的所有值都为空。像这样..
 [HttpPost]
public ActionResult CreateUser(UserMaintenanceViewModel model)
{
try
{
/// TODO: Add insert logic here
var result = repository.insertNewUser(Session["UserId"].ToString(), model.user.UserName, model.user.Password, model.user.FirstName,
model.user.LastName, model.user.Email, model.user.Phone, model.user.ExpireDate);
// If result > 0 user insert successful

此外,如果我切换到通过(FormCollection 表单)获取回发,我会看到 html 元素的名称是“user.UserName”而不是预期的“UserName”。任何指导将不胜感激我觉得我应该能够做到这一点。

非常感谢

最佳答案

如果您有一个复杂的 View 模型,那么您必须确保在构造函数中创建对象的实例。然后您可以向任何子对象添加信息,因为它现在有一个实例。

public class MyViewModel
{


public MyViewModel()
{
Customer= new CustomerViewModel ();
Address = new AddressViewModel();
}

public int OrderNumber{ get; set; }
public CustomerViewModel Customer { get; set; }
public AddressViewModel Address { get; set; }

}

}

关于asp.net-mvc-3 - 在 MVC3 中创建由其他模型的对象组成的 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12713157/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com