gpt4 book ai didi

asp.net - 从 View 更新模型

转载 作者:行者123 更新时间:2023-12-05 03:10:43 25 4
gpt4 key购买 nike

正在处理我的第一个 MVC ASP.NET 项目。我想知道如何使用用户的输入更新模型。

假设我有一个模型 PersonModel.cs

public class PersonModel
{
int personID;
string firstName;
string lastName;
string favoriteColor;

public PersonModel(int personID){
this.PersonID=personID;
//..Fetching data from DB to fill firstName and lastName using personID
//At this point, personID,firstName and lastName are set, only the favoriteColor is missing
}
}

现在我的 Controller :

public class PersonController : Controller
{
public ActionResult Index() {
PersonModel person = new PersonModel(this.UserId());

return View(person);
}

在我看来:

@using Portail.Models
@model PersonModel

@ViewBag.Title = "Welcome page"

<h2> Hello @Model.firstName @Model.lastName </h2>

目前它工作正常,根据数据库中的值显示用户的名字和姓氏。

我希望用户在列表中选择一种颜色,然后将此颜色设置为模型中的 favoriteColor 变量,然后用它更新数据库。例如,通过添加下拉列表:

<select>
<option value="red">Red</option>
<option value="blue">Blue</option>
<option value="green">Green</option>
<option value="yellow">Yellow</option>
</select>

如何通过为 favoriteColor 设置所选颜色来更新我的模型?

请注意,这只是一个示例,对于我正在处理的项目,我需要更新几个变量,而不仅仅是这里的情况。此外,它是 secret 数据,所以我不想在 URL 中传递任何内容。

最佳答案

假设PersonModel有一个名为 FavoriteColor 的公共(public)属性(property)如下

public class PersonModel
{
....
.... // other properties and methods
....

public string FavoriteColor { get; set; }
}

您可以添加 name="FavoriteColor"属性为 <select>标记,放置 <select>标签内 Html.BeginForm , 并添加如下提交按钮

@using (Html.BeginForm("Index", "Person"))
{
<select name="FavoriteColor">
<option value="red">Red</option>
<option value="blue">Blue</option>
<option value="green">Green</option>
<option value="yellow">Yellow</option>
</select>
<input type="submit" name="Save" value="Save" />
}

然后添加一个新的Index使用 [HttpPost] 的操作方法属性和 PersonModel作为 Controller 中的参数

[HttpPost]
public ActionResult Index(PersonModel model)
{
// here model.FavoriteColor will be what's selected in the dropdownlist

// update your database here

return View(model);
}

当你点击提交按钮时,上面的HttpPost Action 方法将被执行,model.FavoriteColor的值将被执行。将是您在下拉列表中选择的内容。之后,您可以使用该值来更新您的数据库。

以上代码仅演示了如何从您的 View 中提交喜欢的颜色。如果您需要个人 ID 来更新数据库,那么您需要添加一个隐藏字段来保存个人 ID 值 Html.BeginForm block

@using (Html.BeginForm("Index", "Person"))
{
@Html.HiddenFor(m => m.PersonID)
<select name="FavoriteColor">
<option value="red">Red</option>
<option value="blue">Blue</option>
<option value="green">Green</option>
<option value="yellow">Yellow</option>
</select>
<input type="submit" name="Save" value="Save" />
}

然后你可以在model.PersonID中得到这个人的id在您的 HttpPost 操作方法中。

一旦你理解了上面的内容,你应该学会使用Html.DropDownListFor填充下拉列表。这将是一个很好的起点:Populating a razor dropdownlist from a List<object> in MVC

关于asp.net - 从 View 更新模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39045845/

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