ASP.NET MVC項目里創建一個aspx視圖


先從控制器里添加視圖

視圖引擎選"ASPX(C#)",使用布局或模板頁不要選。

在Views\EAV目錄里,生成的aspx是個單獨的頁面,沒有代碼文件,所以代碼也要寫在這個文件里。

@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>"

  

@ Import Namespace="System" @ Import Namespace="System.Data"

@ Import Namespace="System.Web.UI"

@ Import Namespace="System.IO"

@ Import Namespace="System.Web.UI.WebControls"

  

<script type="text/C#" runat="Server">

protected void Page_Load(object sender, EventArgs e)

{

int i;

Response.Write("<h2>Page_Load</h2><br/>");

Calendar1.SelectedDate = new DateTime(2013, 1, 1);

for (i = 1; i <= 100; ++i)

{

lstRec.Items.Add(string.Format("Item{0:00}", i));

}

}

</script>

<!DOCTYPE html>

  

<html>

<head runat="server">

<title>Index</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>

<br />

<asp:listbox ID="lstRec" runat="server" Width="150"></asp:listbox>

</div>

</form>

</body>

</html>

  

這樣就可以使用設計界面了

  

ASPX(C#)視圖引擎默認只生成一個aspx文件,都寫在一個文件里畢竟不是好主意,能不能像傳統的aspx的代碼分離結構呢?答案是可以的!

先加一個Controller:EAVController,仍然按上面的辦法加視圖。

  

  

然后在EAV目錄右單擊,添加新建項。

  

選Web窗體,名稱那肯定是index啦。

好,我們需要的出現了。但是運行是要出錯滴。

那 就需要改一下了,打開代碼文件index.aspx.cs,加一個命名空間的引用:using System.Web.Mvc;index頁面類繼承於System.Web.UI.Page是不行的,改成 System.Web.Mvc.ViewPage。ViewPage是Page的子類。

  

------index.aspx.cs文件------

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

  

namespace FirstMvc.Views.EAV

{

    public partial class index : System.Web.Mvc.ViewPage

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            Response.Write("<h2>EAV Page_Load</h2><hr/><br/>");

            for (int i = 1; i <= 100; ++i)

            {

                lstRec.Items.Add(string.Format("Item{0:00}", i));

            }

        }

    }

}

  

  

------index.aspx文件------

@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="FirstMvc.Views.EAV.index"

  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title></title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:ListBox ID="lstRec" runat="server" Width="150"></asp:ListBox>

</div>

</form>

</body>

</html>

  

看看運行效果:

 

有個注意的地方,因為mvc處理的請求而不是文件,它沒有asp頁面的狀態和生命周期,所以不能執行post回送的方法。

例如,在aspx頁面里加一個TextBox和Button:

<asp:TextBox ID="txtTest" runat="server" Text="Hello" />

&nbsp&nbsp
<asp:Button ID="btnsubmit" Text="改變TextBox文本" runat="server" OnClick="submit" />

在代碼文件里:

protected void submit(object sender, EventArgs e)
  {
    txtTest.Text = "World";
  }

很簡單,就是按下這個按鈕使TextBox的文本變成World,但是你會發現沒有效果,TextBox里總是Hello。因為這個訪問的不是aspx頁面,而是http://localhost:51927/eav的形式。

最后:asp.net mvc強烈推薦Razor引擎,本文只是介紹一種方法,在mvc里裝個web窗體也是沒辦法的事情。

使用過成功的例子。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM