gpt4 book ai didi

c# - 对象属性为 NULL,在 MVC 编辑操作中

转载 作者:行者123 更新时间:2023-11-30 15:59:39 25 4
gpt4 key购买 nike

使用以下模型

public class State
{
public int StateId { get; set; }
public string Code { get; set; }
public string Name { get; set; }
}

public class City
{
public int CityId { get; set; }
public string Name { get; set; }
public State state { get; set; }
}

和后续 View

@using (Html.BeginForm())
{
@Html.AntiForgeryToken()

<div class="form-horizontal">
<h4>City</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.HiddenFor(model => model.CityId)
@Html.HiddenFor(model => model.state.StateId)
@Html.HiddenFor(model => model.state.Name)
@Html.HiddenFor(model => model.state.Code)


<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>

<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}

我在我的 Controller 中看到 StateNULL

public ActionResult Edit([Bind(Include = "CityId,Name")] City city)
{
// City.State is NULL and ModelSAtate.IsValid is FALSE
if (ModelState.IsValid)
{
db.Entry(city).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(city);
}

也就是说,City.StateNULL

我知道将 ModelState.IsValid 设置为 TRUE 的解决方法,但我想知道在 MVC View 中处理对象属性的正确方法。

最佳答案

如果你想在你的操作中捕获 State 实体作为 City 的一部分,你还应该添加这些隐藏属性

@Html.HiddenFor(model => model.state.StateId)
@Html.HiddenFor(model => model.state.Name)
@Html.HiddenFor(model => model.state.Code)

编辑:我还必须删除 Bind() 部分,这样我的操作看起来像

public ActionResult Edit(City city)

关于c# - 对象属性为 NULL,在 MVC 编辑操作中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41336775/

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