zoukankan      html  css  js  c++  java
  • MCV之行为

    在Controller中的方法都称为行为,所以的公共方法都可以在浏览器中调用,返回值为:ActionResult的类型或其子类,这个类为抽象类,所以这为抽象编程,
    方法的结果返回为直接或间接继承自ActionResult的类型。
    1.ViewResult: 使用View()可以指定一个页面,也可以指定传递的模型对象,如果没有指定参数则表示返回与Action同名的页面。

    public ActionResult Index()
    {
    ViewData["tt"] = "admin";

    List<SelectListItem> list = new List<SelectListItem>();
    list.Add(new SelectListItem()
    {
    Selected = true,
    Text = "中国",
    Value="1"
    });

    list.Add(new SelectListItem()
    {
    Selected = false,
    Text = "美国",
    Value = "2"
    });


    list.Add(new SelectListItem()
    {
    Selected = false,
    Text = "日本",
    Value = "3"
    });
    ViewData["ddlList"] = list;

    Person p = new Person();

    return View("Show");
    }


    2.ContentResult:使用Content(String content)

    public ActionResult Say()
    {
    return Content("你好,中国!");
    }

    3. RedirectResult:使用Redirect(string url) 将结果转身到其他的Action

    public ActionResult RedirectTest()
    {
    return Redirect(Url.Action("Index", "Home"));
    }

    4. JsonResult:使用Json(object data) 将data序列化为Json数据并返回,推荐加上JsonRequestBehavior.AllowGet 这样如果客户为GET请求也可以处理了。
    public ActionResult JsonTest()
    {
    Person p=new Person()
    {
    Age=10,
    QQ="123"
    };
    return Json(p,JsonRequestBehavior.AllowGet);
    }

    public ActionResult JsonTest()
    {
    List<Person> lPersonInfo = new List<Person>();
    Person p = new Person()
    {
    Age = 10,
    QQ = "123"
    };
    Person p1 = new Person()
    {
    Age = 10,
    QQ = "123"
    };
    lPersonInfo.Add(p);
    lPersonInfo.Add(p1);
    return Json(lPersonInfo, JsonRequestBehavior.AllowGet);
    }

    在内页中就会返回这样的结果:
    1.{"Age":10,"QQ":"123"}
    2.[{"Age":10,"QQ":"123"},{"Age":10,"QQ":"123"}]


    参数的获取:
    第一种:Request["键"]的方式获取;
    传递:
    <a href="@Url.Action("Add","Hello")?id=1"></a>

    获取并发送:
    public ActionResult Add()
    {
    int id=int.Parse(Request["id"]);
    ViewBag.Id=id;
    return View();
    }
    输出: @ViewBag.Id;

    第2种方式:自动装配

    又有两种 a.参数个数少时可以这样一个一个传过来,
    就是通过表单传过来的参数的id和行为 参数列表id 相同 行为就会自动给你转换


    public ActionResult Add(int id)
    {
    int id = int.Parse(Request["id"]);
    ViewBag.Id = id;
    return View();
    }
    [HttpPost]
    public ActionResult Add(int id)
    {
    int id = int.Parse(Request["id"]);
    ViewBag.Id = id;
    return View();
    }

    在控制器的方法【行为】的重载
    1.参数不同以外,
    2.请求类型不同 如get,post [HttpGet]【默认请求格式】 [HttpPost]
    他们属于行为的 特性,他就告诉clr怎么去解析这个方法,怎么去执行。

    b.如果参数个数特别多这样一个一 个传特别麻烦,就需要用一个封装该显示model的对象,他内部帮我们做了完整的处理:
    public ActionResult AddPerson()
    {
    return View();
    }
    [HttpPost]
    //自动装配:可以完成自定义类型的参数的自动装配
    //Person=new Person();
    //person.Age=request["Age"];
    public ActionResul AddPerson(Person person)
    {
    ViewData.Model=person;
    return View("AddPerson1");
    }

  • 相关阅读:
    一本通1281:最长上升子序列 暨 LIS DP求解
    STL初步
    【洛谷P3369】【模板】普通平衡树
    【洛谷P4859】已经没有什么好害怕的了
    【CF961G】Partitions
    【洛谷P4718】【模板】Pollard-Rho算法
    【LOJ#143】质数判定
    【CF917D】Stranger Trees
    【洛谷P3700】小Q的表格
    【洛谷P4245】【模板】任意模数多项式乘法
  • 原文地址:https://www.cnblogs.com/haofaner/p/5863877.html
Copyright © 2011-2022 走看看