在我的html页面中,页面顶部的默认警告表示填写所有输入区域。
<span style="color:gray" class="help-block">Please enter value for all input fields.</span>
这是一个向数据库添加一些东西的页面。当我点击&#34;添加&#34;按钮,它会在我的ActionResult
代码中重定向C#
。在此内部,根据输入的输入值,我的代码要么将内容插入数据库,要么重新加载添加页面,这意味着插入失败。
[HttpPost]
public ActionResult InsertStuff(Stuff stuff)
{
if (stuffManager.InsertStuff(stuff))
return RedirectToAction("ListStuffs", "StuffController"); //successfully inserted!!
else
return RedirectToAction("AddNewStuffForm", "StuffController"); //reload page, here is where i'd like to change warning in html
}
在其他方面,我想加载相同的AddNewStuffForm
页面,但我希望我的警告将颜色从灰色变为红色,如下所示:
<span style="color:red" class="help-block">Please enter value for all input fields.</span>
我不知道该怎么做,正如我推断的那样,我需要在我的html
代码的else
部分中向C#
发送内容,但我不知道如何去做。我真的做了一些研究,一些解决方案提供了使用像Page_Load
这样的方法。但是我在html
处真的是初级水平而且我在提供解决方案时遇到了困难。谁能简单解释一下该做什么?提前谢谢。
答案 0 :(得分:2)
有很多方法可以做到这一点,您可以在ViewData中为您的其他部分存储检查值,并可以在渲染视图上重新检查ViewData值并相应地更改您的样式,如下所示
<span style="color:@(ViewData["fail"])%;" class="help-block">Please enter value for all input fields.</span>
谢谢:)
答案 1 :(得分:0)
看起来你正沿着正确的方向前进。
因此,在您的实例中,不是在错误之后进行重定向,而是可以返回当前页面。如果没有看到您用来生成初始页面的代码,我就不确切知道您的情况会是什么样子,但它通常是这样的:
[HttpPost]
public ActionResult InsertStuff(Stuff stuff)
{
if (stuffManager.InsertStuff(stuff))
return RedirectToAction("ListStuffs", "StuffController"); //successfully inserted!!
else
return View("AddNewStuffForm", "StuffController", stuff); //reload page, here is where i'd like to change warning in html
}
此处的第三个参数是您的原始模型 - 这通常可用于使用用户输入的值重新填充页面。
我通常也会首先验证用户输入 - 在ASP.Net MVC中你可能会使用类似ModelState.IsValid
答案 2 :(得分:-1)
填写ViewData
,如下所示:
[HttpPost]
public ActionResult InsertStuff(Stuff stuff)
{
if (stuffManager.InsertStuff(stuff)){
return RedirectToAction("ListStuffs", "StuffController");//successfully inserted!!
ViewData["PageMessage"] = "The message you want to print in case of success";
}
else{
return RedirectToAction("AddNewStuffForm", "StuffController"); //reload page, here is where i'd like to change warning in html
ViewData["PageMessage"] = "The message you want to print in case of fail";
}
}
然后在您的视图中的ViewData
中打印您的邮件,如下所示:
<p style="color:red;">@ViewData["PageMessage"]</p>