【发布时间】:2017-06-11 13:33:41
【问题描述】:
我有一个非静态类 Institute,如果对象未传递到此视图中,我将无法使用静态属性 DisplayPicturePath。但是,如果我将静态类与静态方法一起使用,则可以查看。如果我的方法是错误的,有什么建议吗?
[HttpGet]
public ActionResult Create() {
//if do not pass institute into view
//Institute institute = new Institute();
return View();
}
我的剃刀视图有这个
<div class="ui segment">
<img id="DisplayPicture_img" alt="Institute Picture" class="ui fluid image" src="@Url.Content(Path.Combine(Institute.DisplayPicturePath ,"univeristy.jpg"))" />
</div>
我的课是这样的
public class Institute
{
public Institute()
{
DisplayPicture = "institute.png";
Scholarships = new List<Scholarship>();
ModifiedDate = DateTime.Now;
EntryDate = DateTime.Now;
}
[NotMapped]
public static string DisplayPicturePath
{
get
{
return @"\\"+ Path.Combine("Content", "images", "DisplayPictures");
}
}
[Key]
[DisplayName("Institute Id")]
public int InstituteId { get; set; }
[DisplayName("Institute Name")]
public string Name { get; set; }}
}
我如何使用另一个静态类来使用这种方式
<div class="ui segment">
<img id="DisplayPicture_img" alt="intitute Picture" class="ui fluid image" src="@Url.Content(Path.Combine(UtilityMethods.GetDisplayPicturePath(PictureType.Institute),"univeristy.jpg"))" />
</div>
我的静态类是
public static class UtilityMethods
{
public static string GetDisplayPicturePath(PictureType type)
{
if (type.Equals(PictureType.Institute))
{
return @"\\" + Path.Combine("Content", "images", "DisplayPictures", "Institute");
}
else if(type.Equals(PictureType.User))
{
return @"\\" + Path.Combine("Content", "images", "DisplayPictures", "User");
}
else if (type.Equals(PictureType.Scholarship))
{
return @"\\" + Path.Combine("Content", "images", "DisplayPictures", "Scholarship");
}
else
{
return @"\\" + Path.Combine("Content", "images");
}
}
}
【问题讨论】:
-
您看到了什么错误?是否在页面顶部添加了类的命名空间引用?
-
它是一个空引用错误,就像你不通过视图传递一个非静态属性一样
-
您是否尝试在服务器代码中访问
Institute.DisplayPicturePath并查看其是否正常工作? -
是的,我确实试过了,但它不起作用,我得到空引用错误。但是当使用完整的静态类时,它工作正常..
-
那么它的问题在静态属性的代码中。尝试返回一些常量字符串,看看它是否有效。
标签: c# asp.net-mvc razor static