1、利用ViewBag,从服务器端创建一个显示js开关的ViewBag,然后到View中去做判断。

Controller端

[HttpPost]
public ActionResult Index(hk_Admin model)
{
if (model.UserName != "xiaojie")
{
ModelState.AddModelError("UserName", "用户名不正确。");
}
if (!ModelState.IsValid)
{
ViewBag.msg = "error";
}
return View();
}

View端

@{
if(@ViewBag.msg == "error")
{
<script type="text/javascript">
alert("请输入用户名");
</script>
}
}
</body>
</html>

个人感觉这种方式比较灵活,可以控制脚本在页面中的任何位置。

2、直接在Controller中返回一个内容为脚本代码的Content

[HttpPost]
public ActionResult Index(hk_Admin model)
{
if (model.UserName != "xiaojie")
{
ModelState.AddModelError("UserName", "用户名不正确。");
}
if (!ModelState.IsValid)
{
return Content("<script >alert('请输入用户名');window.history.back(-1);</script >");
}
return View();
}

这种方法因为直接输出内容,所以不加后续处理(history.back或location)的话,页面会显示空白;

3、在Controller中返回一个Javascript,使用这种方式的前提需要采用AJAX的方式,否则脚本无效。

Controller端

[HttpPost]
public ActionResult Index(hk_Admin model)
{
if (model.UserName != "xiaojie")
{
ModelState.AddModelError("UserName", "用户名不正确。");
}
if (!ModelState.IsValid)
{
return JavaScript("请输入用户名");
}
return View();
}

View端部分代码

@using (Ajax.BeginForm(new AjaxOptions()))
{
<div id="main"> <div><img src="@baseUrl/login_top.gif" /></div>
<div id="login_center">
<table width="" border="" cellspacing="" cellpadding="" id="form_login">
<tr>
<td width="" height="" align="right" class="white">用户名:</td>
<td width="" height="">
<input type="text" class="input_text" name="UserName" id="UserName" /> @Html.ValidationMessageFor(m => m.UserName)
</td>
<td height="">&nbsp;</td>
</tr>

这种方式限制了必须使用ajax方式提交表单。

还有其他的比如采用PartialView写脚本的方式,都大同小异。

MVC从服务器端返回js到客户端的方法(总结)的更多相关文章

  1. director.js:客户端的路由---简明中文教程

    1.引子 最近学用director.js,那是相当的简单易学易使用.不过开始学的时候,搜搜过后,却没有发现相关的中文教程.于是决定硬啃E文,翻译备用的同时也当是给自己上课并加深对它的理解. direc ...

  2. Asp.net MVC 中Controller返回值类型ActionResult

    [Asp.net MVC中Controller返回值类型] 在mvc中所有的controller类都必须使用"Controller"后缀来命名并且对Action也有一定的要求: 必 ...

  3. MVC ValidationAttribute 服务器端自定义验证

    MVC ValidationAttribute 服务器端自定义验证 客户端验证 上文只说了客户端的自定义验证,这样对于用户的输入还是不够可靠,用户完全可以绕过我们定义的客户端验证.所以仅有客户端的验证 ...

  4. MVC 中Controller返回值类型ActionResult

    下面列举Asp.net MVC中Controller中的ActionResult返回类型 1.返回ViewResult视图结果,将视图呈现给网页 public ActionResult About() ...

  5. ASP.NET误人子弟教程:在MVC下如何返回图片

    这几天忙着一些小事,也没有写什么了,今天,我们来玩一个比较简单的东东.就是在MVC下如何返回图片,相信,在传统WebForm下,大家都晓得怎么弄,方也不限于一种,但是,在架构较为严格的MVC里面,刚开 ...

  6. ASP.NET MVC下如何返回图片

    方式一: 首先,我们应当从控制器入手,控制器一般不都是return View的吗?那怎么返回图片? 当然,Controller类也没有return Image 的,上次我们的例子是返回JSON,其实我 ...

  7. C# MVC中直接执行Js

    .NET MVC里如何在服务器端执行JS: 三种解决方案: 1.直接返回JavaScript. public ActionResult XXXAction1() {      return JavaS ...

  8. dotNET开发之MVC中Controller返回值类型ActionResult方法总结

    1.返回ViewResult视图结果,将视图呈现给网页 2. 返回PartialViewResult部分视图结果,主要用于返回部分视图内容 3. 返回ContentResult用户定义的内容类型 4. ...

  9. asp.net mvc处理css和js版本问题

    当服务的修改了js和css内容后,发布到IIS服务器上,总是导致客户端内容显示不正确,原因是客户端存在缓存,还是加载的原来的js和css问题. 在css或js后面添加版本号,例如: <scrip ...

随机推荐

  1. okhttp3 get post 简单封装

    最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...

  2. BZOJ3821 : 玄学

    对操作建立线段树,每个节点维护一个有序的操作表,表示用$[l,r]$的操作在每段区间上的作用效果. 对于一个线段树节点,合并左右儿子信息只在该区间刚刚被填满时进行,利用归并排序,时间复杂度为$O(n\ ...

  3. 转 Web移动应用调试工具——Weinre

    如今人们也越来越习惯在手机上浏览网页,而在手机上这些针对桌面浏览器设计的网页经常惨不忍睹.Web应用开发者需要针对手机进行界面的重新设计,但是手机上并没有称心如意的调试工具(如Firebug.web ...

  4. Codeforces Round #192 (Div. 2) B. Road Construction

    #include <iostream> #include <vector> using namespace std; int main(){ int n,m; cin > ...

  5. Java_BigDecimal类型比较大小

    这个类是java里精确计算的类 1 比较对象是否相等 一般的对象用equals,但是BigDecimal比较特殊,举个例子: BigDecimal a=BigDecimal.valueOf(1.0); ...

  6. Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程

    Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程   在新的Ubuntu 64位系统下去编译早期的安卓源码是会出现很多问题的,因为64位系统在安装完成后,很多32位的兼容 ...

  7. 典型Event ID

    Sr no Event ID 2003 Server Event ID 2008 Server Event Type 1 528 4624 Local User logon 2 6008 6008 U ...

  8. ubuntu下用virtualbox安装windows虚拟机

    按照这个教程: http://jingyan.baidu.com/article/eae07827856ac21fed54856f.html 安装. 会出现问题:"VT-x is disab ...

  9. {转自MC}NVIDIA DirectX 11演示DEMO详解

    http://tieba.baidu.com/p/1960826986 图形技术无论如何发展,最终都要落到实际的应用中才有效果.在个人电脑上,图形技术最大的用户除了显示UI和操作界面外,就是呈现美轮美 ...

  10. 每天学点GDB 15

    本节重点描述两个gdb集成测试环境 有没有办法在一边调试的时候,一边显示对应的源码呢?有没有一种工具能够将gdb集成到ide中呢,本文就试图回答这些问题. emacs gdb 在linux的世界里,e ...