Mvc

  1.Html 增加扩展方法

 using System.Web.Mvc;

 namespace KnockoutBootstrapMvc.Entensions
{
public static class HtmlHelperExtensions
{
public static HtmlString HtmlConvertToJson(this HtmlHelper htmlHelper, object model)
{
var setting = new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
Formatting = Formatting.Indented
};
return new HtmlString(JsonConvert.SerializeObject(model, setting));
}
}
}

 2.Code First

创建Entity实体,当有外键关联时,可以在类内部创建virtual ObjClass  如果是数组为ICollection<ObjectClass>

  public class Author
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Biography { get; set; }
public virtual ICollection<Book> Books { get; set; }
} public class Book
{
public int Id { get; set; }
public string Title { get; set; }
public string Isbn { get; set; }
public string Synopsis { get; set; }
public string Description { get; set; }
public string ImageUrl { get; set; }
public virtual Author Author { get; set; } }

3.Db类库\重写OnModelCreating方法

创建Db类继承DbContext,

 创建无参构造函数,设置父类连接字符串的名称

 创建实体对象  Public DbSet<EntityName> PropertyName {get;set;}

 重写OnModelCreating方法,此方法内在实体类创建时触发,可以设置实体的创建格式  如:开启、关闭默认的Id列为主键,是否自增标识列等。

  public class BookContext:DbContext
{
public BookContext()
:base("BookContext")
{ } public DbSet<Book> Books { get; set; }
public DbSet<Author> Authors { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
} }

4.创建数据库启动程序类库,集成DropCreateDataBaseIfModelChanges<T> 、重写Seed方法用来初始化表格信息、向数据库表格中插入数据。

  未直接save的表,在save关联表时,数据也会插入进去

 public class BookInitializer : DropCreateDatabaseIfModelChanges<BookContext>
{
protected override void Seed(BookContext context)
{
var author = new Author()
{
Biography = "..",
FirstName = "zang",
LastName = "san"
};
var books = new List<Book>()
{
new Book()
{
Author=author,
Description="...",
ImageUrl="http://ecx.images-amazon.com",
Isbn="",
Title="Knokout.js",
Synopsis="..." },
new Book()
{
Author=author,
Description="...",
ImageUrl="http://ecx.images-amazon.com",
Isbn="",
Title="bootstrap.css",
Synopsis="..."
}
,
new Book()
{
Author=author,
Description="...",
ImageUrl="http://ecx.images-amazon.com",
Isbn="",
Title="asp.net mvc",
Synopsis="..."
}
}; author = new Author()
{
Biography = "..",
FirstName = "li",
LastName = "si"
};
books.Add(new Book()
{
Author = author,
Description = "...",
ImageUrl = "http://ecx.images-amazon.com",
Isbn = "",
Title = "lisi asp.net mvc",
Synopsis = "..."
}); books.ForEach(b => context.Books.Add(b));
context.SaveChanges();
//base.Seed(context); //new BookInitializer();
} }

    在应用启动方法中设置数据库对象,

  1.Global.asax中创建Db对象

  2.DataBase.SetInitialzer(new Objclass);

  3.Db对象.DataBase.Initialize(true);

   namespace KnockoutBootstrapMvc
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles); var bookContext = new BookContext();
Database.SetInitializer(new BookInitializer());
bookContext.Database.Initialize(true); }
}
}

5.Controller 方法属性前可以使用HttpPost等定义访问请求格式及是否启用验证

   // POST: Authors/Create
// 为了防止“过多发布”攻击,请启用要绑定到的特定属性,有关
// 详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=317598。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,FirstName,LastName,Biography")] Author author)
{
if (ModelState.IsValid)
{
db.Authors.Add(author);
db.SaveChanges();
return RedirectToAction("Index");
} return View(author);
}

 6.@sections 定义标签,在Layout页面里可以使用 @RenderSection(name:required:) 来加载对应的标签

 

PageA.cshtml
@section scripts
{
<script type="text/javascript"> function ViewModel(authors)
{
var self = this;
self.authors = authors;
} var viewModel = new ViewModel(@Html.HtmlConvertToJson(Model));
ko.applyBindings(viewModel);
</script> } Layout.cshtml
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
<script type="text/javascript" src="~/Scripts/knockout-3.4.0.js"></script>
@RenderSection( name:"scripts", required: false)

KnocoutJs+Mvc+BootStrap 学习笔记(Mvc)的更多相关文章

  1. 2.《Spring学习笔记-MVC》系列文章,讲解返回json数据的文章共有3篇,分别为:

    转自:https://www.cnblogs.com/ssslinppp/p/4528892.html 个人认为,使用@ResponseBody方式来实现json数据的返回比较方便,推荐使用. 摘要 ...

  2. ASP.NET Core MVC 网站学习笔记

    ASP.NET Core MVC 网站学习笔记 魏刘宏 2020 年 2 月 17 日 最近因为” 新冠” 疫情在家办公,学习了 ASP.NET Core MVC 网站的一些知识,记录如下. 一.新建 ...

  3. Bootstrap~学习笔记索引

    回到占占推荐博客索引 bootstrap已经用了有段时间了,感觉在使用上还是比较容易接受的,在开发人员用起来上,也还好,不用考虑它的兼容性,手机,平台,PC都可以有效的兼容. bootstrap官方a ...

  4. Bootstrap学习笔记(二) 表单

    在Bootstrap学习笔记(一) 排版的基础上继续学习Bootstrap的表单,编辑器及head内代码不变. 3-1 基础表单 单中常见的元素主要包括:文本输入框.下拉选择框.单选按钮.复选按钮.文 ...

  5. bootstrap学习笔记之为导航条添加标题、二级菜单及状态 http://www.imooc.com/code/3120

    为导航条添加标题.二级菜单及状态 加入导航条标题 在Web页面制作中,常常在菜单前面都会有一个标题(文字字号比其它文字稍大一些),其实在Bootstrap框架也为大家做了这方面考虑,其通过" ...

  6. bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111

    基础导航条 在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多.我们先来看导航条中最基础的一个--基础导航条. 使用方法: 在制作一个基础导航条时,主要分 ...

  7. Bootstrap学习笔记-布局

    Bootstrap学习笔记-布局 默认是响应式布局,就是你在改变页面的时候也不会出现乱的现象. <html><head> <meta charset="utf- ...

  8. 3.《Spring学习笔记-MVC》系列文章,讲解返回json数据的文章共有3篇,分别为:

    转自:https://www.cnblogs.com/ssslinppp/p/4528892.html 概述 在文章:<[Spring学习笔记-MVC-3]SpringMVC返回Json数据-方 ...

  9. 1.《Spring学习笔记-MVC》系列文章,讲解返回json数据的文章共有3篇,分别为:

    转自:https://www.cnblogs.com/ssslinppp/p/4528892.html [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://w ...

随机推荐

  1. Delphi 使用 Datasnap 的几种三层应用技术总结

    Delphi 使用 Datasnap 进行三层应用开发,积累了几种技术,总结如下: 1.(推荐!)在 Datasnap 服务端 使用 TDatasetProvider,客户端 使用   TDSProv ...

  2. python中的os.listdir()函数

    os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表.这个列表以字母顺序. 它不包括 '.' 和'..' 即使它在文件夹中. 只支持在 Unix, Windows 下使用. ...

  3. jquery iCheck的全选和获取value

    jQuery iCheck 插件提供高度可定制的复选框和单选按钮(jQuery和Zepto).最新版本1.0.2,有个最新的2.0预览版,但是发布之后没有再更新. 特点:在不同的浏览器和设备(桌面和移 ...

  4. 洛谷:P3281 [SCOI2013]数数 (优秀的解法)

    刷了这么久的数位 dp ,照样被这题虐,还从早上虐到晚上,对自己无语...(机房里又是只有我一个人,寂寞.) 题目:洛谷P3281 [SCOI2013]数数 题目描述 Fish 是一条生活在海里的鱼, ...

  5. java 解压缩 中文名称问题

    public List<String> unZip(String pathString, String zipPathString) { long startTime = System.c ...

  6. Excel 2013 表格自用技巧

    参考 Excel表格的基本操作(精选36个技巧) Excel2013基本用法 关于VLOOKUP函数 目录 快速复制单元格 单元格内强制换行 锁定标题行 查找重复值 万元显示 单元格中显示001 按月 ...

  7. Dubbo原理解析-Dubbo内核实现之SPI简单介绍

    转自:https://blog.csdn.net/quhongwei_zhanqiu/article/details/41577159 Dubbo 采用微内核+插件体系,使得设计优雅,扩展性强.那所谓 ...

  8. auth模块(登录验证)

    settings:'django.contrib.auth.middleware.AuthenticationMiddleware',#这个是认证的中间件,认证成功的话,就可以把这个用户user封装到 ...

  9. iOS9 新功能:Support Universal Links,iOS10 openUrl新函数

    先看官方文档:https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalL ...

  10. gulp.基础

    1.安装 全局安装 npm install --global gulp 作为项目的开发依赖安装 npm install gulp --save-dev 2.在根目录下创建一个名为gulpfile.js ...