如何在同一个VS2010解决方案中引用.aspx页面的.html页面?

时间:2012-05-13 02:08:53

标签: html visual-studio-2010 asp.net-mvc-2

这个问题与VS 2010中MVC项目文件夹中的MVC框架和文件排列约定有关。它还与项目文件的文件名\路径约定有关(从* .aspx和* .html引用它们)

为了帮助回答这个问题,我创建了一个名为“PAPlus.Asp”的示例项目(一个虚构的名称)。重现步骤:打开VS2010SP1Rel->文件 - > NewProject-> ASP.Net MVC 2空Web应用程序 - > Name =“PAPlus.Asp”

我的问题是:如果我创建一个MVC 2.0应用程序(下面的示例)并想要链接位于.. \ PAPlus.Asp \的项目文件夹中的* .html文件Views \ Home \ ShowCuteDog.html我如何a href index.aspx中的html文件?

我正在使用以下DataProvider:

  <connectionStrings>

    <add name="PaPlus"
         connectionString="Data Source=|DataDirectory|PAPlus.sdf"
         providerName="System.Data.SqlServerCe.4.0"/>

  </connectionStrings>

我创建了以下内容:

namespace PAPlus.Asp.Models
{
    public class User
    {
        public int UserId { get; set; }
        public string UserName { get; set; }
    }
}

namespace PAPlus.Asp.Models
{
    public class PaPlus : DbContext
    {
        public DbSet<User> Users { get; set; }
    }
}

namespace PAPlus.Asp.Controllers
{
    public class HomeController : Controller
    {
        PaPlus _paPlus = new PaPlus();

        public ActionResult Index()
        {
            var users = from u in _paPlus.Users
                        select u;

            return View(users);
        }

    public ActionResult Create()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Create(User newUser)
    {
        if (ModelState.IsValid)
        {
            if (_paPlus.Users.Any(d => d.UserName == newUser.UserName))
            {
                ModelState.AddModelError("UserName", "The username is not unique");
                return View(newUser);
            }

            _paPlus.Users.Add(newUser);
            _paPlus.SaveChanges();

            return RedirectToAction("Index");
        }

        return View(newUser);

    }

}
}

我也创建了VIEWS,但它们太长了,无法在此发布。我将继续我的解释,显示index.aspx的body

<body>
    <div>   
        <h1>Application Users</h1>
    <ul>    
    <%
        foreach (User d in Model)
        {%>
        <li> 
            <%=d.UserName%> (<%=d.UserId%>)
        </li>
    <%
        }%>
    </ul>
    <p>
        <%=Html.ActionLink("Create New User", "Create")%>
    </p>
    <p>
        <a href="Views/Home/ShowCuteDog.html">Navigate to Cute Dog Page!</a>
    </p>
    </div>
</body>

通过上述所有解释,我可以定位一条我想要帮助的特定行:

<a href="Views/Home/ShowCuteDog.html">Navigate to Cute Dog Page!</a>

显然,ShowCuteDog.html的路径无效。然而,似乎无论我做什么,我都无法进入有效的道路。

我想知道如何使用a href

打开ShowCuteDog.html

我还想知道我应该在我的MVC项目解决方案文件夹结构中存储ShowCuteDog.html(/ Views / Home /似乎是最好的地方,也许我错了?)

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您不应将Views下的内容直接链接。默认情况下,Views/web.config阻止了对该路径的浏览器访问,原因很简单:您不希望用户直接从那里加载文件。

所以你应该把普通的html放在其他地方;也许在/html代替?然后将其链接为<a href="/html/cutepuppies.html">