asp.net MVC中的方法可以写在前台页面吗?附解决方案

事情是这样的,因为好久没用MVC了,而且对它又是初学,所以很纠结。遇到这样一个问题:需要实现的是,如果数据库没有图片地址,显示默认图片,如果有则显示。起初的疑问是,主要看那个getUrl()方法,在asp.net MVC里怎么不能这么写?报错呢?(PS:其实思路本身就是错的,深受以前学习asp.net的迫害有么有晕。。。见代码:

 @{ public static string getUrl(string Url)//处理url { if (string.IsNullOrEmpty(Url)) { return "/uploads/noproduct.png"; } return Url; } }
<div class="c-prolistbox"> <ul> @foreach (var item in (List<ProductService.Model.ProductModel>)ViewBag.modelList) { <li> <div class="lproot"> <div class="photoimgcc"> <a href="@Url.Content("~/Show/Detail?id")=@item.Id" target="_blank"> <img src="@getUrl(item.Url)" width="220" height="220" /></a> </div> <div class="show-item-meta"> <div class="prlist-price"><em>¥</em>@((Convert.ToDouble(item.Price) / 100).ToString("0.00"))</div> </div> <div class="show-item-info">@item.Name</div> </div> </li> } </ul> <div class="clear"></div> </div>

这样子理论上应该是正确的,为何运行的时候会报错呢。好吧,本人没有得到MVC Razor真正的奥妙。因为我从来不知道它还有@helper语法。冷汗

废话不多说,解决方法很简单,见代码。

 @helper getUrl(string Url){//处理url if (string.IsNullOrEmpty(Url)) { @( "/uploads/noproduct.png"); } else { @(Url); } }

是不是觉得代码和刚开始写的代码相似?对-,就是因为你不懂Razor视图引擎的语法,下一步看来我该整理一下了。。

如果有同样不懂的@helper是何物的请默默打开此扫盲文抠鼻http://ashui.net/go/asp-net-mvc-helper