ASP.NET MVC与EntityFramework入门(一)

Razor视图


视图的相关约定
1.所有的视图必须放到Views目录下
    Views\Home\index.cshtml
2.不同控制器的视图用文件夹进行分割,每个控制器都对应一个视图目录
    HomeController.cs--Views\Home\...
    MapController.cs--Views\Map\...
3.一般视图名字跟控制器的Action相对应(非必须)

4.多个控制器公共的视图放到Shared

public class HomeController : Controller
{
    public ActionResult Index()  // 视图 Views\Home\Index.cshtml
    {
    return View(); 
    }
    
    public ActionResult Get() // 视图 Views\Home\Get.cshtml
    {
        return View();
    }
    
}


Razor引擎

@字符是Razor中一个重要的符号,它被定义为Razor服务器代码块的开始符号

Razor用法
1.输出单一变量
视图 Views\Home\Index.cshtml 中
--输出当前时间
<div>
    @DateTime.Now
</div>

2.输出三元运算符
<div>
    @{ var i = 3;
    int[] nums = {1,4,6,7,3,8};
    }


    @(i == 3 ? "ok" : "no")
    
    @if(i == 4)
    {
        @:启动
    }
    else
    {
        @:停止
    }
    
    @foreach(var item in nums)
    {
        @item
    }

</div>

3.执行多行C#代码

4.Razor中注释

5.IF判断表达式

6.在程序区块中插入文字内容

7.foreach循环


MVC传值


传值方式:
1.Viewdata
2.Viewbag
3.TempData
4.Model(强类型传值)

--新建ASP.NET MVC 4 Web应用程序(MVC传值)--基本 --Controllers文件夹添加HomeController.cs
--添加Index方法对应的视图

public ActionResult Index()
{
    Session["key"] = "hello";
    String s = Session["key"]; //取值
    
    ViewData["key"] = "hello";
    ViewData["key"] //取值
    
    ViewBag.key = "hi";
    
    TempData["key"] = "hi";
    
    return View();

}


<body>
    <div>
        @ViewData["key"]
        
        @ViewBag.key
        
        @TempData["key"]
        

    </div>
</body>


Viewdata和Viewbag

添加一个类 Student.cs
public class Student
{
    public int Sid{get;set;}
    public string Sname{get;set;}
    public int Age{get; set;}
    
    public string sex{ get;set;}
    public string inte { get; set;}

}


public ActionResult Demo
{
    Student stu = new Student();
    stu.Sid = 5;
    stu.Sname = "liming";
    stu.Age = 18;
    
    ViewData["stu"] = stu;
    ViewBag.stu = stu;

    
    return View();
}

<div>
    @{
        @ViewData["stu"] as MVC传值.Models.Student //类型转换

        MVC传值.Models.Student viewdataStu = (MVC传值.Models.Student) @ViewData["stu"];
        
        MVC传值.Models.Student viewbagStu = ViewBag.stu;
    }
    
    @viewbagStu.Sname
    
    @viewdataStu.Sname
</div>

当传过来的数据是强类型数据的时候,viewdata需要作数据类型转换,viewbag不需要

传基本数据类型 viewdata与viewbag没有区别


viewdata和tempdata

public ActionResult Index()
{
    ViewData["abc"] = "abc";
    return RedirectToAction("getValue");//返回到一个方法
}
public ActionResult getValue() //添加一个视图
{
    return View();
    //return ViewData["abc"].ToString(); 报错
}
//在视图getValue中无法获得ViewData["abc"]的值


public ActionResult Index()
{
    TempData["abc"] = "abc";
    return RedirectToAction("getValue");//返回到一个方法
}
public ActionResult getValue() //添加一个视图
{
    return View();
    //return TempData["abc"].ToString(); 
}
//在视图getValue中可以获得TempData["abc"]的值


通过ViewData传值时不可以跨方法,TempData可以跨方法传值


强类型传值


public ActionResult ModelDemo() //添加一个视图,勾选创建强类型视图,模型类选择Student类
{
    Student stu = new Student();
    stu.Sid = 1;
    stu.Sname = "huahua";
    stu.Age = 20;
    
    return View(stu); //通过强类型传值
}

//ModelDemo.cshtml中
@modelodel MVC传值.Models.Student //表示传过来的为Student类型的对象
@Model List<MVC传值.Models.Student>  //表示传过来的为Student类型对象的集合
<div>
    @Model.Sname
</div>


request传值

<div>
    <form action = "/formDemo/getStudent" method="post">  //提交到formDemoController控制器的getStudent方法
        <table>
            <tr><td>学生姓名:</td><td><input type = "text" name = "Sname"/></td></tr>
            <tr><td>学生性别:</td><td><input type = "radio" name = "sex" value = "男"/>&nbsp&nbsp 
                                        <input type = "radio" name = "sex" value = "女"/></td> </tr>
            
            <tr><td>兴趣:</td> <td><input type = "checkbox" name = "inte" value="乒乓球"/>乒乓球
                                    <input type = "checkbox" name = "inte" value="羽毛球"/>羽毛球
                                    <input type = "checkbox" name = "inte" value="网球"/>网球
                                    <input type = "checkbox" name = "inte" value="游泳"/>游泳
                </td></tr>
            <tr><td><input type = "submit" value = "提交"/></td></tr>
        </table>
    </form>

</div>


public class formDemoController : Controller
{
    public ActionResult Index() //创建视图
    {
    
        return View();
    }
    
    public ActionResult getStudent() //使用request获取表单的值
    {
        string Sname = Request["Sname"];
        string sex = Request["sex"];
        string inte = Request["inte"];
        
        return "姓名:" + Sname +" 性别:" + sex + "兴趣:" + inte;
    }
    
    //通过参数获取表单提交过来的数据
    public ActionResult getStudentDemo1(string Sname,string sex)
    {
        return "姓名:" + Sname +" 性别:" + sex + "兴趣:" + Request["inte"];
    }

    
}


对象传值

<div>
    <form action = "/formDemo/getStudentDemo2" method="post">  //提交到formDemoController控制器的getStudentDemo2方法
        <table>
            <tr><td>学生姓名:</td><td><input type = "text" name = "Sname"/></td></tr>
            <tr><td>学生性别:</td><td><input type = "radio" name = "sex" value = "男"/>&nbsp&nbsp 
                                        <input type = "radio" name = "sex" value = "女"/></td> </tr>
            
            <tr><td>兴趣:</td> <td><input type = "checkbox" name = "inte" value="乒乓球"/>乒乓球
                                    <input type = "checkbox" name = "inte" value="羽毛球"/>羽毛球
                                    <input type = "checkbox" name = "inte" value="网球"/>网球
                                    <input type = "checkbox" name = "inte" value="游泳"/>游泳
                </td></tr>
            <tr><td><input type = "submit" value = "提交"/></td></tr>
        </table>
    </form>

</div>


public class formDemoController : Controller
{
    public ActionResult Index() //创建视图
    {
    
        return View();
    }
    
    public ActionResult getStudent() //使用request获取表单的值
    {
        string Sname = Request["Sname"];
        string sex = Request["sex"];
        string inte = Request["inte"];
        
        return "姓名:" + Sname +" 性别:" + sex + "兴趣:" + inte;
    }
    
    //通过参数获取表单提交过来的数据
    public ActionResult getStudentDemo1(string Sname,string sex)
    {
        return "姓名:" + Sname +" 性别:" + sex + "兴趣:" + Request["inte"];
    }

    //通过对象
    public string getStudentDemo2(Student stu)
    {
        stu.inte = Request["inte"];
        //要求:表单input标签name值均一一对应属性值,点击提交,自动拼接对象,并将各值赋值到对象的属性中
        return "姓名:" + stu.Sname  +" 性别:" + stu.sex + "兴趣:" + stu.inte;
        //通过这种方式复选框传不全,所以仍需要用Request传值方式
    
    }
}


formcollection传值


<div>
    <form action = "/formDemo/getStudentDemo3" method="post">  //提交到formDemoController控制器的getStudentDemo3方法
        <table>
            <tr><td>学生姓名:</td><td><input type = "text" name = "Sname"/></td></tr>
            <tr><td>学生性别:</td><td><input type = "radio" name = "sex" value = "男"/>&nbsp&nbsp 
                                        <input type = "radio" name = "sex" value = "女"/></td> </tr>
            
            <tr><td>兴趣:</td> <td><input type = "checkbox" name = "inte" value="乒乓球"/>乒乓球
                                    <input type = "checkbox" name = "inte" value="羽毛球"/>羽毛球
                                    <input type = "checkbox" name = "inte" value="网球"/>网球
                                    <input type = "checkbox" name = "inte" value="游泳"/>游泳
                </td></tr>
            <tr><td><input type = "submit" value = "提交"/></td></tr>
        </table>
    </form>

</div>
public class formDemoController : Controller
{
    public ActionResult Index() //创建视图
    {
    
        return View();
    }
    
    public ActionResult getStudent() //使用request获取表单的值
    {
        string Sname = Request["Sname"];
        string sex = Request["sex"];
        string inte = Request["inte"];
        
        return "姓名:" + Sname +" 性别:" + sex + "兴趣:" + inte;
    }
    
    //通过参数获取表单提交过来的数据
    public ActionResult getStudentDemo1(string Sname,string sex)
    {
        return "姓名:" + Sname +" 性别:" + sex + "兴趣:" + Request["inte"];
    }

    //通过对象
    public string getStudentDemo2(Student stu)
    {
        stu.inte = Request["inte"];
        //要求:表单input标签name值均一一对应属性值,点击提交,自动拼接对象,并将各值赋值到对象的属性中
        return "姓名:" + stu.Sname  +" 性别:" + stu.sex + "兴趣:" + stu.inte;
        //通过这种方式复选框传不全,所以仍需要用Request传值方式
    
    }
    //通过formcollection传值
    public string getStudentDemo3(FormCollection col)
    {
        return "姓名:" + col["Sname"]  +" 性别:" + col["sex"] + "兴趣:" + col["inte"];  //可以直接获取到复选框的值
    }
}

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
创建了一个使用实体框架和SQL Server Express LocalDB来存储和显示数据的简单Web应用程序. 实现了基本的CRUD和排序、筛选、分页及分组功能. using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Linq; using System.Net; using System.Web; using System.Web.Mvc; using ContosoUniversity.DAL; using ContosoUniversity.Models; using PagedList; namespace ContosoUniversity.Controllers { public class StudentsController : Controller { private SchoolContext db = new SchoolContext(); // GET: Students //public ActionResult Index() //{ // return View(db.Students.ToList()); //} /* step1 public ActionResult Index(string sortOrder) { ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date"; var students = from s in db.Students select s; switch (sortOrder) { case "name_desc": students = students.OrderByDescending(s => s.LastName); break; case "Date": students = students.OrderBy(s => s.EnrollmentDate); break; case "date_desc": students = students.OrderByDescending(s => s.EnrollmentDate); break; default: students = students.OrderBy(s => s.LastName); break; } return View(students.ToList()); } */ /*step2 public ViewResult Index(string sortOrder, string searchString) { ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date"; var students = from s in db.Students select s; if (!String.IsNullOrEmpty(searchString)) { students = students.Where(s => s.LastName.Contains(searchString) || s.FirstMidName.Contains(searchString)); } switch (sortOrder) { case "name_desc": students = students.OrderByDescending(s => s.LastName); break; case "Date": students = students.OrderBy(s => s.EnrollmentDate); break; case "date_desc": students = students.OrderByDescending(s => s.EnrollmentDate); break; default: students = students.OrderBy(s => s.LastName); break; } return View(students.ToList()); } */ public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page) { ViewBag.CurrentSort = sortOrder; ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date"; if (searchString != null) { page = 1; } else { searchString = currentFilter; } ViewBag.CurrentFilter = searchString; var students = from s in db.Students select s; if (!String.IsNullOrEmpty(searchString)) { students = students.Where(s => s.LastName.Contains(searchString) || s.FirstMidName.Contains(searchString)); } switch (sortOrder) { case "name_desc": students = students.OrderByDescending(s => s.LastName); break; case "Date": students = students.OrderBy(s => s.EnrollmentDate); break; case "date_desc": students = students.OrderByDescending(s => s.EnrollmentDate); break; default: // Name ascending students = students.OrderBy(s => s.LastName); break; } int pageSize = 6; int pageNumber = (page ?? 1); return View(students.ToPagedList(pageNumber, pageSize)); } // GET: Students/Details/5 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Student student = db.Students.Find(id); if (student == null) { return HttpNotFound(); } return View(student); } // GET: Students/Create public ActionResult Create() { return View(); } // POST: Students/Create // 为了防止“过多发布”攻击,请启用要绑定到的特定属性,有关 // 详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=317598。 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "LastName,FirstMidName,EnrollmentDate")] Student student) { try { if (ModelState.IsValid) { db.Students.Add(student); db.SaveChanges(); return RedirectToAction("Index"); } } catch(DataException /* dex */) { //Log the error (uncomment dex variable name and add a line here to write a log. ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator."); } return View(student); } // GET: Students/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Student student = db.Students.Find(id); if (student == null) { return HttpNotFound(); } return View(student); } // POST: Students/Edit/5 // 为了防止“过多发布”攻击,请启用要绑定到的特定属性,有关 // 详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=317598。 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit([Bind(Include = "ID,LastName,FirstMidName,EnrollmentDate")] Student student) { if (ModelState.IsValid) { db.Entry(student).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(student); } // GET: Students/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } //if (saveChangesError.GetValueOrDefault()) { // ViewBag.ErrorMessage = "Delete failed. Try again, and if the problem persists see your system administrator."; //} Student student = db.Students.Find(id); if (student == null) { return HttpNotFound(); } return View(student); } // POST: Students/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { Student student = db.Students.Find(id); db.Students.Remove(student); db.SaveChanges(); return RedirectToAction("Index"); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值