这个问题与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
我还想知道我应该在我的MVC项目解决方案文件夹结构中存储ShowCuteDog.html(/ Views / Home /似乎是最好的地方,也许我错了?)
提前谢谢。
答案 0 :(得分:1)
您不应将Views
下的内容直接链接。默认情况下,Views/web.config
阻止了对该路径的浏览器访问,原因很简单:您不希望用户直接从那里加载文件。
所以你应该把普通的html放在其他地方;也许在/html
代替?然后将其链接为<a href="/html/cutepuppies.html">