当前位置: 首页 > news >正文

整站网站优化外贸管理网站模板

整站网站优化,外贸管理网站模板,wordpress 干扰码插件,松江团购做网站Action的要求• 必须是一个公有方法• 必须返回ActionResult类型• 必须是实例方法• 不能是范型方法• 没有标注NonActionAttribute• 不能被重载#xff08;overload#xff09; Controller 提供了众多的方法让我们返回各种类型的 ActionResult。 1. View最常用的一种…  Action的要求• 必须是一个公有方法• 必须返回ActionResult类型• 必须是实例方法• 不能是范型方法• 没有标注NonActionAttribute• 不能被重载overload Controller 提供了众多的方法让我们返回各种类型的 ActionResult。 1. View最常用的一种用于返回一个 标准 页面。 protected internal virtual ViewResult View(string viewName, string masterName, object model){  if (model ! null)  {    base.ViewData.Model model;  }  return new ViewResult   {     ViewName viewName,     MasterName masterName,     ViewData base.ViewData,     TempData base.TempData   };}public class ViewResult : ViewResultBase{  protected override ViewEngineResult FindView(ControllerContext context)  {    ViewEngineResult result ViewEngineCollection.FindView(context, ViewName, MasterName);    if (result.View ! null)    {      return result;    }    ...  }} 这个页面默认是 ViewPage也可以是我们自己定义的其它模板引擎页面。MVC 还提供了强类型的 ViewPageTModel。 public class User{  public string Name { get; set; }  public int Age { get; set; }}public class TestController : Controller{  public ActionResult Index()  {    ViewData[message] Hello, World!;    var model new User { Name Tom, Age 13 };    return View(model);  }} Index.aspx % Page LanguageC# InheritsSystem.Web.Mvc.ViewPageLearn.MVC.Controllers.User %html xmlnshttp://www.w3.org/1999/xhtmlhead runatserver  titleIndex/title/headbody  Name: % Model.Name %; Age: % Model.Age %/body/html 在 WebForm 时代我们就已经习惯了将一个页面分解成多个 UserControl现在我们依然可以这么做。htmlHelper 专门提供了 RenderPartial 扩展方法从当前视图目录(Views\xxx)下载入 .ascx 页面。 public static class RenderPartialExtensions{  public static void RenderPartial(this HtmlHelper htmlHelper, partialViewName, model, viewData)  {    htmlHelper.RenderPartialInternal(partialViewName, viewData, model, ViewEngines.Engines);  }}public class HtmlHelper{  internal virtual void RenderPartialInternal(string partialViewName, ViewDataDictionary viewData,     object model, ViewEngineCollection viewEngineCollection)  {    ...    ViewDataDictionary newViewData null;    if (model null)    {      if (viewData null)        newViewData new ViewDataDictionary(ViewData);      else        newViewData new ViewDataDictionary(viewData);    }    else    {      if (viewData null)        newViewData new ViewDataDictionary(model);      else        newViewData new ViewDataDictionary(viewData) { Model model };    }    ViewContext newViewContext new ViewContext(ViewContext, ViewContext.View,       newViewData, ViewContext.TempData);    IView view FindPartialView(newViewContext, partialViewName, viewEngineCollection);    view.Render(newViewContext, ViewContext.HttpContext.Response.Output);  }  internal static IView FindPartialView(viewContext, partialViewName, viewEngineCollection)  {    ViewEngineResult result viewEngineCollection.FindPartialView(viewContext, partialViewName);    if (result.View ! null)    {      return result.View;    }    ...  }} RenderPartialInternal 调用 FindParitialView 从视图引擎中载入 .ascx同时将当前的环境参数传递给它。也就是说 RenderPartial 只是一种视图级别的行为并不会再次触发 Controller Action 操作这点要和 Controller.PartialView() 区别开来。Index.aspx % Page LanguageC# InheritsSystem.Web.Mvc.ViewPageLearn.MVC.Controllers.User %html xmlnshttp://www.w3.org/1999/xhtmlhead runatserver  titleIndex/title/headbody  Name: % Model.Name %; Age: % Model.Age %  br /  % Html.RenderPartial(Part); %/body/html Part.ascx % Control LanguageC# InheritsSystem.Web.Mvc.ViewUserControlLearn.MVC.Controllers.User %% ViewData[message] % br /% Model.Name % 2. ContentContent 用于输出(Response.Write) 静态 片段。 protected internal virtual ContentResult Content(content, contentType, contentEncoding){  return new ContentResult  {    Content content,    ContentType contentType,    ContentEncoding contentEncoding  };}public class ContentResult : ActionResult{  public string Content { get; set; }      public override void ExecuteResult(ControllerContext context)  {    ...    HttpResponseBase response context.HttpContext.Response;    if (!String.IsNullOrEmpty(ContentType))    {      response.ContentType ContentType;    }    if (ContentEncoding ! null)    {      response.ContentEncoding ContentEncoding;    }    if (Content ! null)    {      response.Write(Content);    }  }} 看看和 jQuery 的配合使用。 public class TestController : Controller{  public ActionResult Index()  {    return View();  }  public ActionResult Part()  {    return Content(a href\http://www.rainsts.net\Q.yuhen/a);  }} Index.aspx % Page LanguageC# InheritsSystem.Web.Mvc.ViewPage %html xmlnshttp://www.w3.org/1999/xhtmlhead runatserver  titleIndex/title  script srchttp://www.cnblogs.com/Scripts/jquery-1.3.1.min.js typetext/javascript/script  script typetext/javascript    $(function()    {      $(#div1).load(/test/part);    });  /script/headbody  div iddiv1  /div/body/html 3. PartialViewController.PartialView() 和 HtmlHelper.RenderPartial() 的不同之处在于前者是再次执行 ActionInvoke 并返回一个 ActionResult 结果后者只是使用现有的 ViewContext 显示一个视图片段。而与 Controller.Content() 的区别是 PartialView() 使用视图引擎输出一个 动态 的 ascx 结果。 protected internal virtual PartialViewResult PartialView(string viewName, object model){  if (model ! null)  {    ViewData.Model model;  }  return new PartialViewResult  {    ViewName viewName,    ViewData ViewData,    TempData TempData  };}public class PartialViewResult : ViewResultBase{  protected override ViewEngineResult FindView(ControllerContext context)  {    ViewEngineResult result ViewEngineCollection.FindPartialView(context, ViewName);    if (result.View ! null)    {      return result;    }        ...  }} 和 Content() 一样我们通常将其和 jQuery 等 Ajax 框架配合使用。 public class TestController : Controller{  public ActionResult Index()  {    return View();  }  public ActionResult Part()  {    ViewData[time] DateTime.Now;    var model new User { Name Tom, Age 13 };    return PartialView(model);  }} Index.aspx % Page LanguageC# InheritsSystem.Web.Mvc.ViewPage %html xmlnshttp://www.w3.org/1999/xhtmlhead runatserver  titleIndex/title  script srchttp://www.cnblogs.com/Scripts/jquery-1.3.1.min.js typetext/javascript/script  script typetext/javascript    $(function()    {      $(#div1).load(/test/part);    });  /script/headbody  div iddiv1  /div/body/html Part.ascx % Control LanguageC# InheritsSystem.Web.Mvc.ViewUserControlLearn.MVC.Controllers.User %% ViewData[time] % br /% Model.Name %; % Model.Age % 4. Redirect / RedirectToAction / RedirectToRouteController 提供了几种方式让我们在不同的 Action 之间进行跳转。 public class MvcApplication : System.Web.HttpApplication{  public static void RegisterRoutes(RouteCollection routes)  {    ...    routes.MapRoute    (      Test2,      Test/T2/{name}/{age},      new { controller Test, action T2, name , age 0 }    );    ...  }}   方法1: Redirect() 直接用 Response.Redirect() 完成 url 跳转。 public class TestController : Controller{  public ActionResult Index()  {    return Redirect(/Test/T2/Tom/23);  }  public ActionResult T2(User user)  {    return Content(user.Name);  }} 相关细节 protected internal virtual RedirectResult Redirect(string url){  ...  return new RedirectResult(url);}public class RedirectResult : ActionResult{  public override void ExecuteResult(ControllerContext context)  {    ...    string destinationUrl UrlHelper.Content(Url, context.HttpContext);    context.HttpContext.Response.Redirect(destinationUrl, false /* endResponse */);  }} 方法2: RedirectToAction() 直接使用 Action Name 进行跳转。 public class TestController : Controller{  public ActionResult Index()  {    return RedirectToAction(T2, new { name Tom, age 23 });  }  public ActionResult T2(User user)  {    return Content(user.Name);  }} 如果目标 Action 不在当前 Controller 类则可以指定目标 Controller Name。 return RedirectToAction(T2, new { controllerTest2, name Tom, age 23 }); 相关细节 protected internal virtual RedirectToRouteResult RedirectToAction(string actionName,   string controllerName, RouteValueDictionary routeValues){  RouteValueDictionary mergedRouteValues;  if (RouteData null)  {    mergedRouteValues RouteValuesHelpers.MergeRouteValues(actionName,       controllerName, null, routeValues, true /* includeImplicitMvcValues */);  }  else  {    mergedRouteValues RouteValuesHelpers.MergeRouteValues(actionName,       controllerName, RouteData.Values, routeValues, true /* includeImplicitMvcValues */);  }  return new RedirectToRouteResult(mergedRouteValues);}public class RedirectToRouteResult : ActionResult{  public override void ExecuteResult(ControllerContext context)  {    ...    string destinationUrl UrlHelper.GenerateUrl(RouteName, null /* actionName */,       null /* controllerName */, RouteValues, Routes, context.RequestContext,       false /* includeImplicitMvcValues */);    ...    context.HttpContext.Response.Redirect(destinationUrl, false /* endResponse */);  }} 可以看到 RedirectToRouteResult.ExecuteResult 中使用 Route 相关信息拼接成目标 Url 后进行跳转。方法3:RedirectToRoute() 则是直接用 MapRoute 时定义的 Route Name 进行跳转。 public class TestController : Controller{  public ActionResult Index()  {    return RedirectToRoute(Test2, new { name Tom, age 23 });  }} 相关细节 protected internal virtual RedirectToRouteResult RedirectToRoute(string routeName, RouteValueDictionary routeValues){  return new RedirectToRouteResult(routeName, RouteValuesHelpers.GetRouteValues(routeValues));} 执行过程和 RedirectToAction() 相同。5. JsonJson() 在编写 Ajax 时非常有用可以将 Entity 等对象序列化成 JSON 格式供 Javascript 使用。 public class TestController : Controller{  public ActionResult Index()  {    return View();  }  public ActionResult GetUser(string name)  {    var user new User { Name name, Age 23 };    return Json(user);  }} Index.aspx % Page LanguageC# InheritsSystem.Web.Mvc.ViewPage %html xmlnshttp://www.w3.org/1999/xhtmlhead runatserver  titleIndex/title  script srchttp://www.cnblogs.com/Scripts/jquery-1.3.1.min.js typetext/javascript/script  script typetext/javascript    $(function()    {      $(#btnTest).click(function()      {        $.getJSON        (          /Test/GetUser,           { name: Tom },           function(json)          {            alert(json.Name ; json.Age);          }        );      });    });  /script/headbody  input typebutton idbtnTest valueTest //body/html 很好用不是吗看看相关细节。 protected internal virtual JsonResult Json(object data, string contentType, Encoding contentEncoding){  return new JsonResult  {    Data data,    ContentType contentType,    ContentEncoding contentEncoding  };}public class JsonResult : ActionResult{  public override void ExecuteResult(ControllerContext context)  {    ...    if (Data ! null)    {      JavaScriptSerializer serializer new JavaScriptSerializer();      response.Write(serializer.Serialize(Data));    }  }} 使用 System.Web.Script.Serialization.JavaScriptSerializer 完成 JSON 序列化操作也就是说我们还可以用 ScriptIgnoreAttribute 排除某些属性。6. Javascript某些时候我们需要根据一些逻辑判断来载入执行不同的 Javascript 代码。 public class TestController : Controller{  public ActionResult Index()  {    return View();  }  public ActionResult GetJs(int id)  {    switch (id)    {      case 1:        return JavaScript(alert(Hello, C#!););            case 2:        return JavaScript(alert(Hello, MVC!););            default:        return null;    }  }} Index.aspx % Page LanguageC# InheritsSystem.Web.Mvc.ViewPage %html xmlnshttp://www.w3.org/1999/xhtmlhead runatserver  titleIndex/title  script srchttp://www.cnblogs.com/Scripts/jquery-1.3.1.min.js typetext/javascript/script  script typetext/javascript    $(function()    {      $(#btnTest).click(function()      {        var id $(#txtId).val();        $.getScript(/Test/GetJs/ id);      });    });  /script/headbody  input typetext idtxtId value1 /  input typebutton idbtnTest valueTest //body/html 只是这种做法似乎将 View 和 Controller 的耦合加大了…… 还不如直接用 Javascript 来处理这些。 protected internal virtual JavaScriptResult JavaScript(string script){  return new JavaScriptResult { Script script };}public class JavaScriptResult : ActionResult{  public override void ExecuteResult(ControllerContext context)  {    ...    HttpResponseBase response context.HttpContext.Response;    response.ContentType application/x-javascript;    if (Script ! null)    {      response.Write(Script);    }  }} 7. File (Download / Upload)File() 提供了 Download 功能。 public class TestController : Controller{  public ActionResult Index()  {    return View();  }  public ActionResult Download(int id)  {    var filename String.Format(~/Content/Download/{0}.rar, id);    var fileDownloadName String.Format({0}.rar, id);    return File(filename, application/octet-stream, fileDownloadName);  }} 当我们在浏览器请求 /Test/Download/1 是就会打开下载窗口同时给出了保存文件名。 protected internal virtual FileContentResult File(byte[] fileContents, contentType, fileDownloadName){  return new FileContentResult(fileContents, contentType) { FileDownloadName fileDownloadName };}public abstract class FileResult : ActionResult{  public override void ExecuteResult(ControllerContext context)  {    ...    HttpResponseBase response context.HttpContext.Response;    response.ContentType ContentType;    ...    WriteFile(response);  }  protected abstract void WriteFile(HttpResponseBase response);}public class FileContentResult : FileResult{  protected override void WriteFile(HttpResponseBase response)  {    response.OutputStream.Write(FileContents, 0, FileContents.Length);  }} 文件上传是另一个常用的 Web 应用。 public class TestController : Controller{  public ActionResult Index()  {    return View();  }  public ActionResult Upload(HttpPostedFileBase file)  {    var filename Server.MapPath(~/Content/Upload/ Path.GetFileName(file.FileName));    file.SaveAs(filename);    return null;  }} Index.aspx % Page LanguageC# InheritsSystem.Web.Mvc.ViewPage %html xmlnshttp://www.w3.org/1999/xhtmlhead runatserver  titleIndex/title/headbody  form action/Test/Upload enctypemultipart/form-data methodpost    input typefile namefile /    input typesubmit nameupload /  /form/body/html MVC 提供了一个 HttpPostedFileBaseModelBinder 将 Request.Files 的信息直接映射给 Action 同名参数。 public class HttpPostedFileBaseModelBinder : IModelBinder{  public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)  {    ...    HttpPostedFileBase theFile controllerContext.HttpContext.Request.Files[bindingContext.ModelName];    // case 1: there was no input typefile ... / element in the post    if (theFile null)    {      return null;    }    // case 2: there was an input typefile ... / element in the post, but it was left blank    if (theFile.ContentLength 0 String.IsNullOrEmpty(theFile.FileName))    {      return null;    }    // case 3: the file was posted    return theFile;  }} 看看一次上传多个文件的演示。 public class TestController : Controller{  public ActionResult Index()  {    return View();  }  public ActionResult Upload(HttpPostedFileBase file1, HttpPostedFileBase file2)  {    var html String.Format({0}:{1}br /{2}:{3},       file1.FileName, file1.InputStream.Length,      file2.FileName, file2.InputStream.Length);    return Content(html);  }} Index.aspx % Page LanguageC# InheritsSystem.Web.Mvc.ViewPage %html xmlnshttp://www.w3.org/1999/xhtmlhead runatserver  titleIndex/title/headbody  form action/Test/Upload enctypemultipart/form-data methodpost    input typefile namefile1 /    input typefile namefile2 /    input typesubmit nameupload /  /form/body/html   我们上边所看到的Action都是return View();我们可以看作这个返回值用于解析一个aspx文件。而它的返回类型是ActionResult如 public ActionResult Index(){return View();} 除了View之外那我们这里还能用于返回什么值呢 一、ascx页面 场景要返回代码片断比如Ajax返回一个子页 我们先新建一个Action public ActionResult Ascx(){return PartialView();} 我们下面再建一个View仍然是在Action中点右键AddView。 注意图中勾选。 于是新建了一个ascx页我们将之少做改写一下 % Control LanguageC# InheritsSystem.Web.Mvc.ViewUserControl %div 得到一个DIV /div 运行得到页面   二、返回文本 除了上述情况有时我们还会仅返回一段文本。 此时我们可以使用以下Action形式 public ActionResult Text(){return Content(这是一段文本);} 三、返回Json 有时我们在调用Ajax时还会要求返回对象为Json序列化的结果如 public ActionResult ShowJson(){var m new EiceIndexModel{Name 邹健,Sex true};return Json(m);} 返回文本 {Name:邹健,Sex:true} 四、输出JS文件 大多时候js文件都是静态的但有时js文件可能也要动态生成这时我们可以这样输出 public ActionResult Js(){return JavaScript(var x0;);} 我们访问之得到一个正常页面但其Content-Typeapplication/x-javascript; charsetutf-8 五、页面跳转 1.跳转到Url public ActionResult rdurl(){return Redirect(http://www.baidu.com);} 2.跳转到Action public ActionResult rdaction(){return RedirectToAction(Index,Eice);} 3.跳转到Routing规则 public ActionResult rdrouting(){return RedirectToRoute(Default,//Route名new{Controller Eice,Action Index});} 六、显示文件 public ActionResult fn(){return File(/Content/site.css//文件路径, text/css//文件类型);}  转载于:https://www.cnblogs.com/xumingming/archive/2009/09/22/1571510.html
http://www.sadfv.cn/news/252286/

相关文章:

  • 宁夏住房与城乡建设厅网站促销活动推广方案
  • 中山有网站建设公司吗代做毕业设计网站现成
  • 新吴区建设局网站东莞技术好的网站建设
  • 做百度外链哪些网站权重高点所有手机浏览器大全
  • 民治做网站公司婚纱手机网站制作
  • 上海帝程网站建设公司适合学生做的微商代理
  • 中山平面设计公司墨猴seo排名公司
  • 网站建设工作的函建筑论坛
  • html怎么做网站首页福州做网站优化
  • 做网站有哪些行业企业手机端网站源码
  • 杭州 网站程序摄影网站的意义
  • 德清网站制作wordpress软件企业主题
  • 织梦如何做中英文网站做区块链网站的公司
  • 音乐自助建站刚刚封城最新消息2021
  • 易语言 做网站mysql找人网站
  • 优秀的国外网站网站开发项目名称
  • 鲜花网站前台数据库建设网页版微信怎么发朋友圈
  • 呼伦贝尔网站建设呼伦贝尔app引流推广软件
  • 杭州建站模板制作中国城乡住房建设厅网站
  • 大专网站建设论文五一自驾游去哪里好
  • 广安建设机械网站产品营销策划方案
  • 推推蛙网站建设网页设计案例教程杨松答案
  • 网站是别人做的域名自己怎么续费台州网站关键字优化详情
  • 网站建设牜金手指花总十四食品配送做网站需要什么功能
  • 网站 默认页房地产最新消息14号公告
  • 张家口网站网站建设网站建设 蔬菜配送
  • 公众号版网站建设青岛 网站制作公司
  • 软件前端主要做什么深圳做网站乐云seo费用优惠
  • 重庆顶呱呱网站建设企业网站建设知名
  • 建网站logo怎么做网站排行榜前十名