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-選項-文本編輯器-你有沒有自己加擴展名規則,如果加了,刪除之