gpt4 book ai didi

asp.net-mvc - 在 MVC 中清除页面上的文本框字段

转载 作者:行者123 更新时间:2023-12-03 03:59:35 26 4
gpt4 key购买 nike

由于某种原因,本来应该是一个简单的问题却困扰着我。我是 MVC 新手,所以这应该可以解释这一点。

我试图在输入提交后清除页面上的所有字段。

我在示例中看到了下面的代码,但不知道该把它放在哪里。我在 PersonModel.vb 中尝试了它,但它抛出了错误。我在我的存储库中尝试了它,我保存了我的子程序和函数,并且每次在单词 ModelState 和 ValueProvierResult 上都会抛出错误。

ModelState.SetModelValue("Key", new ValueProviderResult(null, string.Empty, CultureInfo.InvariantCulture))

有人可以为我提供一些清除页面上的字段(文本框)的建议吗?我对 MVC 很陌生,需要一些帮助。

谢谢

长宽

这是代码......

<HttpPost(), MvcReCaptcha.CaptchaValidator()> _
Function Nominate(ByVal m As NominationModel, ByVal captchaValid As Boolean) As ActionResult

Dim db = New ChampionTrees.Common.DataAccess.ChampionTreesRepository With {.UserName = "SYSTEM"}
BindNominateDdls(db)

Dim addPost As Boolean = False
If (Request.Form("addNominator") <> Nothing) Then
m.People.Add(New PersonModel With {.Indicator = PersonIndicator.Nominator})
addPost = True
ElseIf Request.Form("addOwner") <> Nothing Then
m.People.Add(New PersonModel With {.Indicator = PersonIndicator.Owner})
addPost = True
Else
For Each f In Request.Form.Keys
If f.ToString.StartsWith("deletePerson") Then

Dim idx = f.ToString.IndexOf("n")
m.People.RemoveAt(Integer.Parse(f.ToString.Substring(idx + 1, f.ToString.Length - (idx + 1))))
addPost = True
Exit For

End If
Next
End If

If addPost Then

For Each v In ModelState.Values.AsEnumerable()
v.Errors.Clear()
Next

Return View(m)

End If

If m.Tree.Id < 0 AndAlso String.IsNullOrEmpty(m.OtherName) Then

Dim err As String = "Either a Common, Scientific, or Other Name must be provided."
ModelState.AddModelError("Tree.Id", err)
ModelState.AddModelError("OtherName", err)

End If

If String.IsNullOrEmpty(m.Measurement.CountyForester) = _
String.IsNullOrEmpty(m.Measurement.OtherCountyForester) Then

Dim err As String = "A County Forester must be selected or entered (but not both)."
ModelState.AddModelError("Measurement.CountyForester", err)
ModelState.AddModelError("Measurement.OtherCountyForester", err)

End If

Dim i As Integer = 0
For Each p As PersonModel In m.People

If String.IsNullOrEmpty(p.EmailAddress) AndAlso _
(p.Phone.Phone1 Is Nothing Or p.Phone.Phone2 Is Nothing Or p.Phone.Phone3 Is Nothing) Then

ModelState.AddModelError(String.Format("People[{0}].Phone", i), "Either an E-mail Address or Phone number must be provided.")
ModelState.AddModelError(String.Format("People[{0}].Phone.Phone1", i), "")
ModelState.AddModelError(String.Format("People[{0}].Phone.Phone2", i), "")
ModelState.AddModelError(String.Format("People[{0}].Phone.Phone3", i), "")
ModelState.AddModelError(String.Format("People[{0}].EmailAddress", i), " ")

Else

Dim int As Integer = 0
Dim err As Boolean = False

If Not p.Phone.Phone1 Is Nothing AndAlso _
(p.Phone.Phone1.Length <> 3 Or Not Integer.TryParse(p.Phone.Phone1, Int)) Then

ModelState.AddModelError(String.Format("People[{0}].Phone.Phone1", i), "")
err = True
End If
If Not p.Phone.Phone2 Is Nothing AndAlso _
(p.Phone.Phone2.Length <> 3 Or Not Integer.TryParse(p.Phone.Phone2, int)) Then

ModelState.AddModelError(String.Format("People[{0}].Phone.Phone2", i), "")
err = True
End If
If Not p.Phone.Phone3 Is Nothing AndAlso _
(p.Phone.Phone3.Length <> 4 Or Not Integer.TryParse(p.Phone.Phone3, int)) Then

ModelState.AddModelError(String.Format("People[{0}].Phone.Phone3", i), "")
err = True
End If

If err Then ModelState.AddModelError(String.Format("People[{0}].Phone", i), "Phone Number is not numeric.")

End If

If m.OwnershipType = Ownership.Public AndAlso _
p.Indicator = PersonIndicator.Owner AndAlso _
p.ParcelName Is Nothing Then
ModelState.AddModelError(String.Format("People[{0}].ParcelName", i), "The Parcel Name field is required for public nominations.")
End If

i += 1

Next

If Not m.UseNominatorsAsOwners AndAlso _
(From e In m.People Where e.Indicator = PersonIndicator.Owner Select e).Count = 0 Then
ModelState.AddModelError("UseNominatorsAsOwners", "At least one Owner is required.")
End If

If Files.Count > 0 AndAlso Not m.ElectronicUseAgreement Then
ModelState.AddModelError("ElectronicUseAgreement", "The Electronic Use Agreement must be agreed to.")
End If

If Not captchaValid Then
ModelState.AddModelError("ReCaptcha", "You did not type the verification word correctly. Please try again.")
End If

If ModelState.IsValid Then

' load our uploads from session
For Each f In Files
f.Value.Viewable = m.ElectronicUseAgreement
m.Uploads.Add(f.Value)
Next

' insert the nomination into the db
db.InsertNomination(m)

ViewData("message") = "Nomination has been submitted"

End If

ModelState.Clear()
Return View(m)

最佳答案

您好,您应该能够使用:ModelState.Clear(),当您返回 View 时,所有先前输入的数据都将被清除。

编辑:

这是一些示例代码:

public ActionResult Index()
{
return View();
}

[HttpPost]
public ActionResult Index(FormCollection collection)
{
// This will clear whatever form items have been populated
ModelState.Clear();

return View();
}

更新2:

在您的代码中,您正在清除 ModelState,但是您将模型(您将其称为 m)传递回您的 View ,然后您的 View 将选择该模型并显示其属性。

例如,如果我有一个页面接受名字和姓氏,当我发布时,我想将其添加到数据库中,但随后返回相同的 View ,但对于下一个请求为空,我的代码将类似于:

public ActionResult Index()
{
return View();
}

[HttpPost]
public ActionResult Index(Person p)
{
if (ModelState.IsValid)
{
// This will clear whatever form items have been populated
ModelState.Clear();
// Here I'm just returning the view I dont want a model being passed
return View();
}

// Here I'm returning the model as there's an error and the user needs to see
// what has been entered.
return View(p);
}

关于asp.net-mvc - 在 MVC 中清除页面上的文本框字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4887192/

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