我对ASP.NET MVC3有点新鲜。 我在cshtml文件中有这段代码
@grid.GetHtml(
htmlAttributes: new { id = "grid" },
tableStyle: "grid",
headerStyle: "header",
rowStyle: "row",
footerStyle: "footer",
alternatingRowStyle: "altRow",
columns: grid.Columns(
grid.Column(header: "", format: @<text><input name="Checked" type="checkbox" value="@item.Key" /></text>, style: "CheckboxColumn", canSort: true),
grid.Column("Name", "Name"),
grid.Column("Address", "Address"),
grid.Column("City", "City"),
grid.Column("PhoneNumber", "Phone Number"),
grid.Column("", format: (item) =>
{
if (item.ID.Length > 0)
{
//CODE GOES HERE
return Html.Raw(string.Format("<text><img src=\"{0}\" alt=\"Image\" class=\"ToolTip\" title=\"ID # {1} <br> \" /></text>", Url.Content("~/images/coupled.png"), @item.ID.ToString()));
}
else
{
return Html.Raw("<text></text>");
}
}),
))
我想要的是在//CODE GOES HERE
部分编写C#代码。为了改变Url.Content("~/images/coupled.png")
取决于项目ID。
基本上我想要这样的东西:
string URLOfPic;
if(item.ID > 1000)
{
URLOfPic="~/images/aaa.png
}
else
{
URLOfPic="~/images/bbb.png
}
最后使用Url.Content(URLOfPic)
那么如何在页面中使用该C#代码呢?
我希望我很清楚。 非常感谢你的帮助
PS:我希望它是一个C#代码而不是javascript或其他任何东西。 在普通的ASP.NET中,我可以使用后面的代码来完成它。但在MVC3中我不知道如何
答案 0 :(得分:1)
成为Asp.net mvc的新手让我给你一些建议,不要这样做!你在视图中应该拥有的代码最多的是for循环,所有这些逻辑应该在行动中完成。
基本上获取数据并在操作中执行所有逻辑和格式设置,并将其添加到视图模型中,然后将其传递给视图。另外,你要创建非常脆弱的代码块,直到运行时才会出错
答案 1 :(得分:1)
修改项目类以添加图像类。在图像类中,您可以添加Image.URL,Image.Title。这样,在控制器中,您可以根据项目的ID为项目分配图像。这样,您还可以在单个代码点更轻松地修改图像URL,而不是在使用此逻辑的每个视图中进行修改。
答案 2 :(得分:0)
我认为你很亲密,这不起作用吗?
if (item.ID.Length > 0)
{
string URLOfPic;
if(item.ID > 1000)
{
URLOfPic="~/images/aaa.png";
} else {
URLOfPic="~/images/bbb.png";
}
return Html.Raw(string.Format("<text><img src=\"{0}\" alt=\"Image\" class=\"ToolTip\" title=\"ID # {1} <br> \" /></text>", Url.Content(URLOfPic), @item.ID.ToString()));
}