我有一个webgridextensions类,定义了不同场景的"WebGridColumn“返回。
public static WebGridColumn ApptLinksWSchedule(this WebGrid grid, HtmlHelper html)
{
return grid.Column(
header: "",
style: "actionColumn",
format: item => new HtmlString(
html.ActionLink("Schedule", "Schedule", new { ID = item.CourseExamApptID }, new { onclick = "return confirm('Are you sure you'd like to schedule this Appointment?');" }).ToString()
)
);
}
public static WebGridColumn ApptLinksWCancel(this WebGrid grid, HtmlHelper html)
{
return grid.Column(
header: "",
style: "actionColumn",
format: item => new HtmlString(
html.ActionLink("Edit", "Edit", new { ID = item.CourseExamApptID }).ToString() + " | " +
html.ActionLink("Delete", "Delete", new { ID = item.CourseExamApptID }).ToString() + " | " +
html.ActionLink("Cancel", "Cancel", new { ID = item.CourseExamApptID }, new { onclick = "return confirm('Are you sure you'd like to cancel this Appointment?');" }).ToString()
)
);
}在我看来,我需要根据模型属性的值有条件地应用htmlActionLinks。如果我的model.AppointmentStatus =“计划”,显示一组操作链接,如果不显示另一组.
<div class="webgrid-wrapper">
<div id="grid">
@grid.GetHtml(
tableStyle: "webgrid",
headerStyle: "webgrid-header",
footerStyle: "webgrid-footer",
alternatingRowStyle: "webgrid-alternating-row",
selectedRowStyle: "webgrid-selected-row",
rowStyle: "webgrid-row-style",
columns: grid.Columns(grid.Column("StudentID", "SMUId"),
grid.Column("StudentName", "Name"),
grid.Column("CourseName", "Course"),
grid.Column("InstructorName", "Professor"),
grid.Column("ExamLength", "ExamLength"),
grid.Column("SchedExamBeginTime", "Time In"),
grid.Column("SchedExamEndTime", "Time Out"),
grid.Column("Notes", "Notes"),
grid.Column("AppointmentStatus", "Status"),
//THIS IS WHat I'd like to display in a column...
//if (model.AppointmentStatus == "Scheduled")
//{
// html.ActionLink("Edit", "Edit", new { ID = item.CourseExamApptID }).ToString() + " | " +
// html.ActionLink("Delete", "Delete", new { ID = item.CourseExamApptID }).ToString() + " | " +
// html.ActionLink("Cancel", "Cancel", new { ID = item.CourseExamApptID }, new { onclick = "return confirm('Are you sure you'd like to cancel this Appointment?');" }).ToString()
//}
//html.ActionLink("Schedule", "Schedule", new { ID = item.CourseExamApptID }, new { onclick = "return confirm('Are you sure you'd like to schedule this Appointment?');" }).ToString()
//THIS IS MY ORIGINAL CODE THAT WORKS with only needing same column and link for every record...
//grid.ApptLinksWCancel(Html)
)
)
</div>
我怎样才能做到这一点?
谢谢
发布于 2013-08-22 23:01:21
您应该能够为此使用三元表达?:,如下所示:
columns: grid.Columns(
model.AppointmentStatus == "Scheduled" ?
grid.ApptLinksWCancel(Html) : grid.ApptLinksWSchedule(Html)
),编辑
对于更复杂的内容,可以添加一个带有额外参数的扩展方法:
public static WebGridColumn ApptLinks(this WebGrid grid, HtmlHelper html, string status)
{
if (status == "Schedule")
return grid.ApptLinksWSchedule(html);
else
return grid.ApptLinksWCancel(html);
}以同样的方式使用它:
columns: grid.Columns(
grid.ApptLinks(Html, model.AppointmentStatus),
...
),https://stackoverflow.com/questions/18392086
复制相似问题