重新加载时使用C#更改HTML页面

时间:2016-10-11 11:39:47

标签: javascript c# html asp.net-mvc

在我的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处真的是初级水平而且我在提供解决方案时遇到了困难。谁能简单解释一下该做什么?提前谢谢。

3 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点,您可以在ViewData中为您的其他部分存储检查值,并可以在渲染视图上重新检查ViewData值并相应地更改您的样式,如下所示

<span style="color:@(ViewData["fail"])%;" class="help-block">Please enter value for all input fields.</span> 

谢谢:)

答案 1 :(得分:0)

看起来你正沿着正确的方向前进。

  • 通常,在成功 POST后,您会重定向到新页面。
  • 不成功的 POST后,您将保持在同一页面上,显示相应的错误。这是你目前错误的地方。

因此,在您的实例中,不是在错误之后进行重定向,而是可以返回当前页面。如果没有看到您用来生成初始页面的代码,我就不确切知道您的情况会是什么样子,但它通常是这样的:

[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>