netmvc3源码
① asp.net mvc3 项目怎么开发API接口
Visual Studio为我们提供了专门用于创建ASP.NET Web API应用的项目模板,借助于此项目模板提供的向导,我们可以“一键式”创建一个完整的ASP.NET Web API项目。在项目创建过程中,Visual Studio会自动为我们添加必要的程序集引用和配置,甚至会为我们自动生成相关的代码,总之一句话:这种通过向导生成的项目在被创建之后其本身就是一个可执行的应用。
对于IDE提供的这种旨在提高生产效率的自动化机制,我个人自然是推崇的,但是我更推荐读者朋友们去了解一下这些自动化机制具体为我们做了什么?做这些的目的何在?哪些是必需的,哪些又是不必要的?正是基于这样的目的,在接下来演示的实例中,我们将摒弃Visual Studio为我们提供的向导,完全在创建的空项目中编写我们的程序。这些空项目体现在如右图所示的解决方案结构中。
如右图所示,整个解决方案一共包含6个项目,上面介绍的作为“联系人管理器”的单页Web应用对应着项目WebApp,下面的列表给出了包括它在内的所有项目的类型和扮演的角色。
·Common:这是一个空的类库项目,仅仅定义了表示联系人的数据类型而已。之所以将数据类型定义在独立的项目中,只要是考虑到它会被多个项目(WebApi和ConsoleApp)所使用。
WebApi:这是一个空的类库项目,表现为HttpController类型的Web API就定义在此项目中,它具有对Common的项目引用。
WebHost:这是一个空的ASP.NET Web应用,它实现了针对ASP.NET Web API的Web Host寄宿,该项目具有针对WebApi的项目引用。
SelfHost:这是一个空的控制台应用,旨在模拟ASP.NET Web API的Self Host寄宿模式,它同样具有针对WebApi的项目引用。
WebApp:这是一个空的ASP.NET Web应用,代表“联系人管理器”的网页就存在于该项目之中,至于具体的联系人管理功能,自然通过以Ajax的形式调用Web API来完成。
ConsoleApp:这是一个空的控制台应用,我们用它来模拟如何利用客户端代理来实现对Web API的远程调用,它具有针对Common的项目引用。
二、定义Web API
在正式定义Web API之前,我们需要在项目Common中定义代表联系人的数据类型Contact。简单起见,我们仅仅为Contact定义了如下几个简单的属性,它们分别代表联系人的ID、姓名、联系电话、电子邮箱和联系地址。
1: public class Contact
2: {
3: public string Id { get; set; }
4: public string Name { get; set; }
5: public string PhoneNo { get; set; }
6: public string EmailAddress { get; set; }
7: public string Address { get; set; }
8: }
表现为HttpController的Web API定义在WebApi项目之中,我们一般将ApiController作为继承的基类。ApiController定义在“System.Web.Http.dll”程序集中,我们可以在目录“%ProgramFiles%\Microsoft ASP.NET\ASP.NET Web Stack 5\Packages\”中找到这个程序集。具体来说,该程序集存在于子目录“Microsoft.AspNet.WebApi.Core.5.0.0\lib\net45”中。
Web API体现在如下所示的ContactsController类型中。在该类型中,我们定义了Get、Post、Put和Delete这4个Action方法,它们分别实现了针对联系人的查询、添加、修改和删除操作。Action方法Get具有一个表示联系人ID的可缺省参数,如果该参数存在则返回对应的联系人,否则返回整个联系人列表。由于ASP.NET Web API默认实现了Action方法与HTTP方法的映射,所以方法名也体现了它们各自所能处理请求必须采用的HTTP方法。
1: public class ContactsController: ApiController
2: {
3: static List<Contact> contacts;
4: static int counter = 2;
5:
6: static ContactsController()
7: {
8: contacts = new List<Contact>();
9: contacts.Add(new Contact { Id = "001", Name = "张三",
10: PhoneNo = "0512-12345678", EmailAddress = "[email protected]",
11: Address = "江苏省苏州市星湖街328号" });
12: contacts.Add(new Contact { Id = "002", Name = "李四",
13: PhoneNo = "0512-23456789", EmailAddress = "[email protected]",
14: Address = "江苏省苏州市金鸡湖大道328号" });
15: }
16:
17: public IEnumerable<Contact> Get(string id = null)
18: {
19: return from contact in contacts
20: where contact.Id == id || string.IsNullOrEmpty(id)
21: select contact;
22: }
23:
24: public void Post(Contact contact)
25: {
26: Interlocked.Increment(ref counter);
27: contact.Id = counter.ToString("D3");
28: contacts.Add(contact);
29: }
30:
31: public void Put(Contact contact)
32: {
33: contacts.Remove(contacts.First(c => c.Id == contact.Id));
34: contacts.Add(contact);
35: }
36:
37: public void Delete(string id)
38: {
39: contacts.Remove(contacts.First(c => c.Id == id));
40: }
41: }
简单起见,我们利用一个静态字段(contacts)表示存储的联系人列表。当ContactsController类型被加载的时候,我们添加了两个ID分别为“001”和“002”的联系人记录。至于实现联系人CRUD操作的Action方法,我们也省略了必要的验证,对于本书后续的演示的实例,我们基本上也会采用这种“简写”的风格。
② ASP.NET MVC3中文参数乱码问题
编码后常理来说是不会乱码的
注意你R["IG_Name"]取值之后是否已乱码
publicclassHomeController:Controller
{
//
//GET:/Home/
publicActionResultIndex()
{
returnView();
}
publicActionResultIndexTwo()
{
ViewData["IG_Name"]=Request["IG_Name"];
returnView();
}
}
Index.aspx
<body>
<div>
<ahref="IndexTwo?IG_Name=<%=Server.UrlEncode("中文")%>">ClickMe</a>
</div>
</body>
IndexTwo.aspx
<body>
<div>
<%=ViewData["IG_Name"]%>
</div>
</body>
③ 在。net mvc3中跳转页面如何传参,还有如何把查回来的数据显示在页面上,希望有代码示例。谢谢
把你要传递的数据放到Session中到另一个页面读取就行了,查回来的数据你也可以放到Session中再跳回来的时候再读取这个Session
如:Session["text1"] = 你要传递的参数;
string str = Session["text1"].ToString();//这是在你跳转到的页面接收上个页面传递的值
④ jquery+asp.net MVC3实现保存文件到桌面
想要网页在你的电脑的指定位置写内容?这浏览器还有什么安全性可言?
只有执行后台下载,然后用户选择保存在什么位置,文件名你可以在后台给指定,但用户想改也是看用户的心情了。
⑤ asp.net mvc 3 安装时候发生严重错误、代码是:0x80070643 怎么解决 谢谢
今天新安装了一台笔记本电脑,但在安装Asp.Net MVC 3.0时,安装程序报严重错误,原以为是软件包下载的问题(新下载的软件包),重新下载安装,依然是报严重错误,仔细看了一下报错,错误码是“0x80070643”,搜索了一下该错误,ms有这个错误的报告:http://support.microsoft.com/kb/2531566
是因为我先安装了vs2010 SP1造成的,解决方法是,进入注册表,删除下面注册表信息
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/ASP.NET/4.0.30319.0/Path
HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/ASP.NET/4.0.30319.0/Path
(我的电脑上只有第一个注册表项)
然后重新安装Asp.Net mvc 3的软件包,安装成功。
最后把上面的注册表信息恢复回去。
UPdate: 2011-06-02
今天又找到一个好方法:直接解压缩AspNetMVC3Setup.exe,进入解压缩的目录执行
aspnetmvc3.msi、aspnetmvc3vs2010tools.msi等安装包
⑥ 求Asp.Net Mvc3.0 Demo
超简易mvc3实例 这里把逻辑写controller 实际上不应该这么做
就一张表 UserInfo{UserID,UserName,UserPassword}
逻辑写controller里了 model里就一个实体 就不列出来了
HomeController
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TestDemo.Models;
using System.Data.Objects;
namespace TestDemo.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
TestEntities te = new TestEntities();
ObjectQuery<UserInfo> userInfos = te.UserInfoes;
var users = from u in userInfos
select u;
ViewData.Model = users.ToList();
return View();
}
public ActionResult Delete(int id)
{
TestEntities te = new TestEntities();
ObjectQuery<UserInfo> userInfos = te.UserInfoes;
var query = userInfos.Single(u => u.UserID == id);
te.DeleteObject(query);
te.SaveChanges();
return RedirectToAction("Index");
}
public ActionResult Add()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(FormCollection form)
{
TestEntities te = new TestEntities();
UserInfo addUser = new UserInfo()
{
UserName = form["userName"].ToString(),
UserPassword = form["userPassword"].ToString()
};
te.UserInfoes.AddObject(addUser);
te.SaveChanges();
return RedirectToAction("Index");
}
public ActionResult Edit(int id)
{
TestEntities te = new TestEntities();
ObjectQuery<UserInfo> userInfos = te.UserInfoes;
UserInfo user = userInfos.Single(u => u.UserID == id);
ViewData.Model = user;
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(FormCollection form)
{
TestEntities te = new TestEntities();
ObjectQuery<UserInfo> userInfos = te.UserInfoes;
int id = Int32.Parse( form["userID"].ToString());
var query = from u in userInfos
where u.UserID == id
select u;
UserInfo editUser = query.First();
UserInfo user = new UserInfo()
{
UserID=id,
UserName = form["userName"].ToString(),
UserPassword = form["userPassword"].ToString()
};
editUser.UserName = user.UserName;
editUser.UserPassword = user.UserPassword;
te.SaveChanges();
return RedirectToAction("Index");
}
}
}
Add.cshtml
@{
ViewBag.Title = "Add";
}
<h2>Add</h2>
@using (Html.BeginForm())
{
@Html.Label("姓名")
@Html.TextBox("userName")
<hr />
@Html.Label("密码")
@Html.TextBox("userPassword")
<input type="submit" value="提交"/>
}
Edit.cshtml
@using TestDemo.Models
@{
ViewBag.Title = "Edit";
}
<h2>
Edit</h2>
@using (Html.BeginForm())
{
UserInfo query = ViewData.Model;
@Html.Label("ID", query.UserID.ToString());
<br />
@Html.Label("姓名");
@Html.TextBox("userName");<br />
@Html.Label("密码");
@Html.TextBox("userPassword");<br />
@Html.Hidden("userID", query.UserID);
<input type="submit" value="提交" />
}
Index.cshtml
@using TestDemo.Models;
@{
ViewBag.Title = "Index";
}
<!DocType html />
<html>
<head>
<title></title>
<link href="@Url.Content("../Content/Test.css")" type="text/css" rel="Stylesheet" />
</head>
<body>
<div class="all" >
<div class="top">
</div>
<div class="content">
@{
List<UserInfo> users = ViewData.Model;
@Html.ActionLink("添加", "Add")
<table id="qzw">
@foreach (UserInfo user in users)
{
<tr>
<td>@user.UserID
</td>
<td>@user.UserName
</td>
<td>@user.UserPassword
</td>
<td>@Html.ActionLink("删除", "Delete", new { id = user.UserID })
</td>
<td>@Html.ActionLink("修改", "Edit", new { id = user.UserID })
</td>
</tr>
}
</table>
}
</div>
</div>
</body>
</html>
⑦ asp.net mvc3 动态菜单怎么实现
asp.net mvc3 动态菜单实现方法如下:
1、查看代码
@{
ViewBag.Title = "Elixir ERP V1.0 Beta";
Layout = "~/Views/Shared/_LayoutUser.cshtml";
}
<div class="main-container">
<div class="main-wrapper">
<div class="scroll-top">
<a href="#" class="tip-top" title="Go Top"><i
class="icon-arrow-up"></i></a>
</div>
<div class="left-bar merge-left">
<!-- SEARCH BAR -->
<!-- LEFT NAV -->
@section leftnav{
}
</div>
</div>
<div class="container">
</div>
</div>
2、菜单模型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Elixir.Models
{
public class Menu
{
public Menu()
{
MenuItems = new List<MenuItem>();
}
public int Id { get; set; }
public string Name { get; set; }
public List<MenuItem> MenuItems { get; set; }
}
}
3、菜单项
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Elixir.Models
{
public class MenuItem
{
public int Id { get; set; }
public int UserName { get; set; }
public string Name { get; set; }
public string ActionName { get; set; }
public string ControllerName { get; set; }
public string Url { get; set; }
public Menu ParentMenu { get; set; }
}
}
4、导航模型结构
<div class="left-nav">
<ul class="side-navigation accordion"
id="nav-accordion">
<li><a href="#"><i
class="icon-home"></i>Home</a></li>
<li><a href="#"><i class="icon-list-alt"></i>User
Management</a>
<ul><li><a href="#"><i
class="icon-double-angle-right"></i>Create New User</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>Manage Users</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>View Users</a></li>
</ul>
</li>
<li><a href="#"><i
class="icon-table-2"></i>Employee Management</a>
<ul>
<li><a href="#"><i
class="icon-double-angle-right"></i>Employee Registration</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>Manage Employees</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>View Employees</a></li>
</ul>
</li>
<li><a href="#"><i class="icon-columns"></i>DMIT
Management</a>
<ul>
<li><a href="#"><i
class="icon-double-angle-right"></i>Scan Management</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>Report Generation</a></li>
</ul>
</li>
<li><a href="#"><i
class="icon-laptop"></i>Franchise Management </a>
<ul>
<li><a href="#"><i
class="icon-double-angle-right"></i>Franchise Registration</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>Franchise Fee Management</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>Franchise Account
Management</a></li>
</ul>
</li>
<li><a href="#"><i class="icon-font"></i>Customer
Management </a>
<ul>
<li><a href="#"><i
class="icon-double-angle-right"></i>Customer Registration</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>Manage Customer</a></li>
</ul>
</li>
<li><a href="#"><i
class="icon-cord"></i>Counseling Management</a>
<ul>
<li><a href="#"><i
class="icon-double-angle-right"></i>Add Counseling Session</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>Manage Counseling
Sessions</a></li>
</ul>
</li>
<li><a href="#"><i
class="icon-tools"></i>Accounts</a>
<ul>
<li><a href="#"><i
class="icon-double-angle-right"></i>Manage Income</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>Manage Expense</a></li>
</ul>
</li>
<li><a href="#"><i
class="icon-files"></i>Reports</a>
<ul>
<li><a href="#"><i
class="icon-double-angle-right"></i>Elxir Monthly Reports</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>Elixir Yearly Reports</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>Franchise Monthly
Reports</a></li>
<li><a href="#"><i
class="icon-double-angle-right"></i>Franchise yearly Reports</a></li>
</ul>
</li>
</ul>
</div>
⑧ asp.Net MVC3 怎么结合jqgrid做弹出层页面绑定数据页面绑定需要返回数据集合三个
对应的前台代码:
<body>
<form id="form1" runat="server">
<div>
<div class="mg_t15 tc_gray3 ft_l">
为 <span style="color: #0033cc">绝版猪头仔</span>的问题服务事例:<br />
<br />
年级:<asp:DropDownList ID="Dl_Grade" runat="server" AutoPostBack="True" OnSelectedIndexChanged="Dl_Grade_SelectedIndexChanged">
</asp:DropDownList><br />
<br />
学生:<asp:DropDownList ID="Dl_Student" runat="server">
</asp:DropDownList></div>
</div>
</form>
</body>
注意:年级下拉框AutoPostBack="True"事件为即时回传
这种类型仅仅为。NET的。
如果你想象大型站点一样的无刷新,请采用AJAX方式,后台代码大致如此。
前台用JAVASCRIPT调用xmlhttp实现无刷新与域内后台交互
⑨ 谁有ASP.NET MVC3 WCF 开发的小项目源代码
如果你是想学习的话,最好下载个mvc3的书籍,然后跟着他边学变写代码,等你学完了,自然就有项目源码了
⑩ .net MVC3 写代码 cshtml 语法不变色显示,全是黑色的,求指教,把VS2010,mvc3重装了也不行
先看2个东东
1.Microsoft ASP.NET WebPages - Visual Studio 2010 Tools这个程序有没有安装,没有的话安之
2.确认一下 VS-选项-文本编辑器-你有没有自己加扩展名规则,如果加了,删除之