我知道这似乎很基本的,也是应该的,但我不能找出我错了。 (我读HVE上如此相似的标题,并在网络上的资源,但是仍然无法想出办法来的其他文章),所以任何帮助,将不胜感激。
我有一个控制器和它我设置一个字符串变量。 现在我不介意这需要一个属性,一个ActionResult,或直方法的形式。 我只想要一个简单的字符串,我可以在控制器一起玩,并返回到视图。
从本质上讲什么,我试图做的是列出一个给定的文件夹中的文件。 所以我的逻辑是这样的:
- 查找当前文件夹(部分成功)
追加的路径,要找到这些文件的。 也就是说,如果我的当前文件夹是网络\然后我会追加类似“内容\ CSS”如果我想列出所有例如CSS文件。 (我这样做是因为我想允许用户通过选择CSS应用动态地更改网站)。 因此,它看起来像:
CurrentPath + = “内容\ CSS”
我想要的文件名加载到一个数组或列表
- 我想这个列表传递给我的看法在组合框中(这是我的_Layout.cshtml)来呈现。
重要的是要知道,我想查看有关_Layout.cshtml字符串作为我不能只是建立了它的另一个观点是非常重要的。 (除非我错了,在这种情况下我会appreicate任何帮助)。
目前我还在努力让传递给我的看法的方式,我可以自由地操纵它就像在步骤2中一个简单的字符串。
我开始了与一个单独的静态类和一个全局变量:
public static class MyTheme
{
public static string CurrentPath = HostingEnvironment.MapPath("~");
}
在我看来,我有:@ Html.Label(MyProject.Web.Controllers.MyTheme.CurrentPath);
这个工作,但是当我试图用一个if语句来确定该字符串是否为空或空的我得到了错误。 所以,我的下一个尝试都失败了。
接下来,我决定把它变成一个控制器(在这种情况下我BaseController),这是当我开始遇到了问题。 下面的代码:
里面BaseController类
public ActionResult ThemePath()
{
string currentPath = Server.MapPath("~");
if (string.IsNullOrEmpty(currentPath))
{
currentPath = "Error!";
}
else
{
currentPath = "Our Path Is: " + currentPath;
}
return View(currentPath);
}
我不知道如何访问和我_Layout.cshtml视图中运行这些
所以接下来我想里面BaseController的标准方法:
public string ThemePath()
{
string currentPath = Server.MapPath("~");
if (string.IsNullOrEmpty(currentPath))
{
currentPath = "Error!";
}
else
{
currentPath = "Our Path Is: " + currentPath;
}
return currentPath;
}
再次,我不知道如何访问这些视图
最后,我试图用ViewBag和ViewData的,现在我只想疯狂! 所以在我的基本控制器我有:
public string ThemePath()
{
ViewBag.currentPath = Server.MapPath("~");
if (string.IsNullOrEmpty(ViewBag.currentPath))
{
ViewBag.currentPath = "Error!";
}
else
{
ViewBag.currentPath = "Our Path Is: " + ViewBag.currentPath;
}
return ViewBag.currentPath;
}
在我看来,我有
@Html.Label(ViewBag.CurrentPath);
甚至
@Html.Label(ViewBag.CurrentPath.ToString());
用下面的友好的小错误信息:
CS1973:“System.Web.Mvc.HtmlHelper”有一个名为“标签”没有适用的方法,但似乎有这个名字的扩展方法。 扩展方法不能动态调度。 考虑强制转换动态参数或调用没有扩展方法的语法的扩展方法。
最后,我试图ViewData的在基如下:public串ThemePath(){计算机[ “currentPath”] =使用Server.Mappath( “〜”);
if (string.IsNullOrEmpty(ViewData["currentPath)"].ToString()))
{
ViewData["currentPath"] = "Error!";
}
else
{
ViewData["currentPath"] = "Our Path Is: " + ViewData["currentPath"];
}
return ViewData["currentPath"].ToString();
}
并相应地在_Layout.cshtml我尝试:
@Html.Label(ViewData["CurrentPath"].ToString());
如果没有的ToString()我得到上述错误:
随着的ToString()我得到一个空refrence execption错误。
所以我现在有点迷失和真的不知道我要去的地方错了。 在此先感谢您的帮助。