gpt4 book ai didi

asp.net-mvc - 在 Asp.Net MVC View 中,不呈现 Controller 对模型所做的更改

转载 作者:行者123 更新时间:2023-12-02 07:39:17 26 4
gpt4 key购买 nike

我是 ASP.NET MVC 新手,需要一些帮助。
当通过帖子触发“P01”操作时,我收到强类型模型作为参数,更改此模型实例的属性并调用“return View(model);”。
在 View 中,我使用“@Html.TextBoxFor(m => m.p01campo01)”语法。
有人here有类似的问题并获取使用我正在使用的语法的建议。
有人here正在使用“<%=Html.TextBox("Person.LastName", ViewData.Model.LastName)%>”语法。
问题是当 View 呈现时,文本框具有最后发布的值,而不是我在 Controller 中分配的值。

感谢所有试图在这里帮助我的人,我将第一个有效的答案作为答案。

这是我的代码:

*************************************************
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;

namespace MyTest.Models
{
//-------
public class testePg01
{
[DataType(DataType.Text)]
[Display(Name = "p01campo01")]
public string p01campo01 { get; set; }

[DataType(DataType.Text)]
[Display(Name = "p01campo02")]
public string p01campo02 { get; set; }

}
//-------
}
*************************************************

*************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MyTest.Models;

namespace MyTest.Controllers
{
public class TesteController : Controller
{
//-------
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult P01()
{
return View();
}
//-------
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult P01(testePg01 model)
{
model.p01campo01 = model.p01campo01 + "#updatedHereButNotInView";
model.p01campo02 = model.p01campo02 + "#updatedHereButNotInView";
return View(model); // it dont return updated
}
//-------

}
}
*************************************************

*************************************************
@model MyTest.Models.testePg01

@{
ViewBag.Title = "P01";
}

<h2>P01</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@Html.ValidationSummary(true, "Erro na pagina.")

@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
<div>
<fieldset>
<legend>Test P01</legend>

<div class="editor-label">
@Html.LabelFor(m => m.p01campo01)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.p01campo01)
@Html.ValidationMessageFor(m => m.p01campo01)
</div>

<div class="editor-label">
@Html.LabelFor(m => m.p01campo02)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.p01campo02)
@Html.ValidationMessageFor(m => m.p01campo02)
</div>
<p>
<input type="submit" value="P01" />
</p>
</fieldset>
</div>
}
*************************************************

最佳答案

默认情况下不会呈现帖子中所做的模型更改。相反,它使用模型中传递给 Controller ​​方法的内容。要解决此问题,请尝试添加:

ModelState.Clear();

紧接在 RedirectToAction 之前。

关于asp.net-mvc - 在 Asp.Net MVC View 中,不呈现 Controller 对模型所做的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8191290/

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