【转载】Asp.Net MVC3网站并成功的连接了MongoDB

news/2024/5/20 3:09:23/文章来源:https://blog.csdn.net/weixin_33973600/article/details/94619619

http://www.cnblogs.com/leo_wl/archive/2012/02/10/2345890.html

 

我们已经创建了一个简单的Asp.Net MVC3网站并成功的连接了MongoDB。但只实现了创建和显示的功能。本回实现了完整的增删改查。

 

创建的部分,上次的代码中存在一些错误,造成了每个属性都会被创建为单独的一条记录,这并不是我们期待的结果。更改如下:

\Controllers\HomeController.cs

   1:          [HttpPost]
   2:          public ActionResult Create(FormCollection collection)
   3:          {
   4:              try
   5:              {
   6:                  var db = GetDB();
   7:                  var doc = new BsonDocument();
   8:   
   9:                  foreach (var key in collection.AllKeys)
  10:                  {
  11:                      doc.Add(new BsonElement(key, collection[key]));
  12:                  }
  13:   
  14:                  db["testTable"].Insert(doc);
  15:                  return RedirectToAction("Index");
  16:              }
  17:              catch
  18:              {
  19:                  return View();
  20:              }
  21:          }

其实这样写并不安全,会把所有从页面POST过来的内容都作为属性创建并保存,但是简单啦。我们注意力主要集中在MongoDB的使用,安全性并不在考虑范围内。

显示的部分,也做了相应的修改,使其更符合Asp.Net MVC3 Razor引擎的规范:

\Controllers\HomeController.cs

   1:          public ActionResult Index()
   2:          {
   3:              var testTable = GetDB()["testTable"].FindAll();
   4:              return View(testTable);
   5:          }

\Views\Home\Index.cshtml

   1:  @{
   2:      ViewBag.Title = "Index";
   3:      Layout = "~/Views/Shared/_Layout.cshtml";    
   4:  }
   5:  <h2>
   6:      Index</h2>
   7:  <ul>
   8:      @foreach (var testData in Model)
   9:      {
  10:          <li>
  11:              @{
  12:          var id = string.Empty;
  13:          foreach (var property in testData.Names)
  14:          {
  15:              if (property == "_id")
  16:              {
  17:                  id = testData[property].ToString();
  18:              }
  19:              else
  20:              {
  21:                  @string.Format("{0}:{1}", property, testData[property]);<br />                            
  22:              }
  23:          }                
  24:                  <a href="/Home/Delete/@id">Delete</a> <a href="/Home/Edit/@id">Edit</a> <a href="/Home/Details/@id">Details</a>
  25:              }
  26:          </li>
  27:      }
  28:  </ul>
  29:  <a href="/Home/Create">Create New</a>

总体来说,Razor引擎的代码写起来还是流畅+愉快。有一个简单的校技巧,想要链接目录从网站根目录开始的话,要用“/”开头。

显示效果如下:

image

接下来我们就分别来实现删除,编辑和查看功能。

Details链接:

\Controllers\HomeController.cs

   1:          public ActionResult Details(string id)
   2:          {
   3:              try
   4:              {
   5:                  var db = GetDB();
   6:                  var doc = db["testTable"].Find(Query.EQ("_id", new BsonObjectId(id))).First();                
   7:                  return View(doc);
   8:              }
   9:              catch
  10:              {
  11:                  return View();
  12:              }            
  13:          }

Edit页面:

\Controllers\HomeController.cs

   1:          public ActionResult Edit(string id)
   2:          {
   3:              var db = GetDB();
   4:              var doc = db["testTable"].Find(Query.EQ("_id", new BsonObjectId(id))).First();
   5:              return View(doc);
   6:          }

\Home\Edit.cshtml

   1:  @{
   2:      ViewBag.Title = "Edit";
   3:      Layout = "~/Views/Shared/_Layout.cshtml";
   4:  }
   5:  <h2>
   6:      Edit</h2>
   7:  <form method="post" action="/Home/Edit/@Model["_id"].ToString()">
   8:      Name:
   9:      <input name="name" type="text" value="@Model["name"]" /><br />
  10:      Age:
  11:      <input name="age" type="text" value="@Model["age"]" /><br />
  12:      Gender:
  13:      <input name="gender" type="text" value="@Model["gender"]" /><br />
  14:      Married:
  15:      <input name="married" type="text" value="@Model["married"]" /><br />
  16:      <input type="submit" value="Update" />
  17:      <a href="/Home/Index">Cancel</a>
  18:  </form>

\Controllers\HomeController.cs

   1:          [HttpPost]
   2:          public ActionResult Edit(string id, FormCollection collection)
   3:          {
   4:              try
   5:              {
   6:                  var db = GetDB();
   7:                  var update = new UpdateBuilder();
   8:                  foreach (string key in collection.Keys)
   9:                  {
  10:                      update.Set(key, collection[key]);
  11:                  }
  12:   
  13:                  db["testTable"].Update(Query.EQ("_id", new BsonObjectId(id)), update);
  14:                  return RedirectToAction("Index");
  15:              }
  16:              catch
  17:              {
  18:                  return View();
  19:              }
  20:          }

删除功能:

\Controllers\HomeController.cs

   1:          public ActionResult Delete(string id)
   2:          {
   3:              try
   4:              {
   5:                  var db = GetDB();
   6:                  db["testTable"].Remove(Query.EQ("_id", new BsonObjectId(id)));
   7:                  return RedirectToAction("Index");
   8:              }
   9:              catch
  10:              {
  11:                  return View();
  12:              }
  13:          }
Global.asax.cx也可以改回Index开始:
   1:              routes.MapRoute(
   2:                  "Default", // Route name
   3:                  "{controller}/{action}/{id}", // URL with parameters
   4:                  new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
   5:              );

 

搞定。

不用设计数据库好爽啊。。想怎么插就怎么插。。。无Schema好爽啊!Razor基本很人性化,缺点很少。

不过感觉MongoDB关方的Connector功力比较弱,不支持Linq也就罢了,implicit也不实现,无法隐式转化格式,写起来很是别扭,不够流畅。

 

接下来准备研究一下MongoDB的高级功能,敬请期待。

完整代码下载: http://files.cnblogs.com/pandora/MvcApplication1_CRUD.zip 

 

转载于:https://www.cnblogs.com/fx2008/archive/2012/04/07/2436280.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_780311.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于window2003服务器网站访问缓慢!

2019独角兽企业重金招聘Python工程师标准>>> 最近几天发现网站访问缓慢,有时会出现超时,检查后发现没有受到攻击,ping tracert 都很正常,最好发现需要磁盘整理,经过整理后正常了,待观察!!!!!!!! 转载于:https://my.oschina.net/yangalbert/blog/64684

Piwik 1.8.4 发布,网站访问统计系统

Piwik 1.8.4 发布&#xff0c;该版本主要是 bug 修复&#xff0c;显著降低中大型网站的内存占用&#xff0c;另外包含一些新特性和可用性的提升&#xff0c;详细的改进记录请看此处的图文说明。 注意&#xff1a;这个版本包含一些数据库结构的改动&#xff0c;请小心运行更新脚…

Linux怎么运行lisp,Lisp - Ubuntu 中的编程语言_Linux编程_Linux公社-Linux系统门户网站...

LispLisp 语言在2010年6月编程语言排行榜中排名第十六位。下面就是 GregorianTest.lisp 程序&#xff1a;安装 GNU Common Lisp 软件包&#xff0c;gcl 可以作为交互窗口&#xff0c;也可编译源程序(使用 –compile 参数)&#xff0c;还可以解释执行(使用 –f 参数)&#xff1a…

浅谈网站流量劫持防范措施

前几天上网打开163首页时&#xff0c;发现页面底部莫名其妙的出现一个边框。这在以前可是未曾有过的&#xff0c;而且以后也绝不可能会有这么丑陋的设计。 趋于好奇心&#xff0c;立刻在边框上点了右键审查元素。尼玛&#xff0c;不看不知道&#xff0c;网易首页的HTML何时变得…

恶搞别人电脑输入百度网址出现搜狐的网站--关于Hosts文件一些运用

在学习搭建Web服务器和Apache服务器的原理和运用的时候,用到了虚拟主机技术.于是就涉及到了Hosts文件.然后就小小学习了一点点.然后觉得挺好玩的.下面给分享一下这个文件的作用和一些简单的运用.首先科普一下,hosts文件的定义. Hosts是一个没有扩展名的系统文件&#xff0c;可以…

Java系的大网站架构-LinkedIn和淘宝

国内私募机构九鼎控股打造APP&#xff0c;来就送 20元现金领取地址&#xff1a;http://jdb.jiudingcapital.com/phone.html 内部邀请码&#xff1a;C8E245J &#xff08;不写邀请码&#xff0c;没有现金送&#xff09;国内私募机构九鼎控股打造&#xff0c;九鼎投资是在全国股份…

Nginx配置虚拟机网站根目录

为什么80%的码农都做不了架构师&#xff1f;>>> 今天一个网友叫我帮他在我的vps上配置nginx虚拟机时&#xff0c;发现我更改虚拟机的根路径后&#xff0c;nginx只会执行&#xff0c;nginx默认的配置的根目录下的index.php&#xff0c;但是index.html的&#xff0c;…

如何把qq聊天工具加入到网站中

自己建立了一个网站&#xff0c;很想和一些访问者实现互动交流&#xff0c;可是没机会。其实&#xff0c;我们可以通过一些聊天软件来实现&#xff0c;如我们熟悉的QQ和雅虎通就可以&#xff0c;下面我们就来介绍一下怎么样实现。把QQ添加在网站首先我们登陆QQ&#xff0c;在QQ…

网站内容和外链在优化中的占比

随着互联网的发展&#xff0c;很多人对网站优化中外链和内容的着重程度有着摇摆不定的态度&#xff0c;不知该侧重于哪一个。那么在这里就这个问题将和大家做一下探讨。 一、相对于新站来说&#xff0c;自从百度算法的更新后&#xff0c;刚建的新站内容却显得越来越重要了&…

angularjs php电商网站,AngularJs应用:实现类似购物页面的一个小例子(附代码)...

本篇文章给大家带来的内容是关于AngularJs应用&#xff1a;实现类似购物页面的一个小例子(附代码)&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。写个小应用&#xff0c;熟练一下AngularJs.。Page Titlevar myAppangular.mo…

屏蔽某些网站软件方法

今年不知道怎么回事&#xff0c;也许是年纪大了&#xff0c;自己的注意力越来越难易集中了&#xff0c;经常在上班的时候开小差&#xff0c;看那些和工作无关的网站&#xff0c;例如微博&#xff0c;知乎&#xff0c;虎嗅、36氪等&#xff0c;一看就十几分钟&#xff0c;开始不…

细谈PHP多语种建站

2019独角兽企业重金招聘Python工程师标准>>> 公司产品网站不可能局限于中文&#xff0c;因为你的网站注册客户也许是美国人&#xff0c;韩国人&#xff0c;西班牙人等&#xff0c;你不得不面临网站多语种解决问题。 其实多语言网站很多&#xff0c;如谷歌网站&#…

网站性能构建

网页性能管理详解 你遇到过性能很差的网页吗&#xff1f; 这种网页响应非常缓慢&#xff0c;占用大量的CPU和内存&#xff0c;浏览起来常常有卡顿&#xff0c;页面的动画效果也不流畅。 你会有什么反应&#xff1f;我猜想&#xff0c;大多数用户会关闭这个页面&#xff0c;改为…

招聘网站需求分析

网站定位&#xff1a;建筑行业专业性盈利性招聘网站。 一、主页设计 用户明确要求以下三点&#xff1a; 1、主色调&#xff1a;蓝色。 2、有不同尺寸的广告位。 3、自动刷新。 其余参照以下网站&#xff1a; 4&#xff0c;个人用户注册页面 5&#xff0c;企业注册页面 二、求职…

php签入html出来的影响seo吗_黑帽seo盈利-黑帽seo转型-seo优化黑帽

大家好&#xff0c;我是逆冬&#xff0c;今天来分享一下实战SEO需要掌握什么样的技能以及SEO知识误区&#xff0c;本篇文章仅代表逆冬本人几年的经验、不见得适合每一个SEOer!下面就让逆冬本人来分析一下实战型SEO到底需要掌握什么技能。第1点&#xff1a;SEO需要不需要熟练掌握…

iis网站根目录不为只读_搭建网站使用香港虚拟主机怎么样?

1. 香港虚拟主机一般是环境已经搭建好了&#xff0c;只需要将网站文件上传至根目录下&#xff0c;目前虚拟主机提供两种网站运行环境&#xff0c;asp.netIISplesk面板&#xff0c;这就需要将网站文件asp程序上传至httpdoc目录下&#xff0c;另外一个运行环境phpapachecpanel面板…

网站被黑检测与网站被黑处理方法

看到此文后&#xff0c;我认为你应该试着通过此文的方法检测一下你的网站是否被黑&#xff0c;因为有可能你的网站被黑了&#xff0c;连你自己都不知道&#xff0c;从下面的图片可以明显的看得出&#xff0c;我的网站也曾被黑过&#xff0c;但这位大神并没有打算处理我的网站&a…

测评网站源码 php,PiPiCMS影视建站程序评测:PHP版的MAXCMS

PiPiCMS皮皮影视采集程序&#xff0c;是一款基于PHPMySQL的影视建站程序&#xff0c;也是一款全新的PHP影视建站程序&#xff0c;作为一个刚推出1个月不到的程序&#xff0c;其功能已经较为完善&#xff0c;更新发布和漏洞修复速度也很快。不足之处是模板和自定义规则还不够充足…

网站性能优化

网站前端的优化还是很重要的&#xff0c;减少请求数&#xff0c;减少页面打开时间都能对页面访问性能提升不少&#xff0c;最近公司就在全站做优化。 由于公司的站已经有两三年的历史了&#xff0c;平时pm提的需求会分给不同的前端人员做&#xff0c;对插件引入和请求外部资源也…

frameset框架在.net网站中的小实现。

一般我们生成网页&#xff0c;为减少代码的开发量&#xff0c;通常将不变的网页部分进行重用。通用为三种方法&#xff1a; 1.frameset框架 2.用户自定义控件 3.母版页&#xff08;消耗资源大&#xff0c;不追叙&#xff09; 通常1&#xff0c;2两种方法常用。 1.frameset框架 …