将功能调用到视图剃须刀中

时间:2016-11-22 09:40:35

标签: c# asp.net-mvc linq razor

您好我可以在我的视图中调用一个函数来获取foreach中的id的描述

我的观点

   @if (Model != null)
            {
                int i = 1;
                foreach (var item in Model)
                {
                <tr class="">
                    <td class="left">@{ new Fullname().getfullname(item.student_id.value).ToString(); }</td>
                    <td class="left"></td>
                    <td class="left">@CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(item.paid_month.Value).ToUpper()</td>
                    <td class="left">@item.monthly</td>
                    <td class="left">@item.transport</td>
                    <td class="left">@item.discount_details</td>
                    <td class="left">@item.total</td>
                </tr>
                }
            }
类中的

public class Fullname
{
    private dbEntities db = new dbEntities();
    public string getfullname(int? id)
    {
        var StudentSelect = db.student.Where(s => s.student_id == id)
            .Select(s => new
            {
                FullName = s.lastname + " " + s.firstname
            });


        return StudentSelect.FirstOrDefault().FullName;
    }
}

我试图从模型中的@ item.student_id获取学生全名

但没有显示

感谢

2 个答案:

答案 0 :(得分:2)

问题是你正确检索了Fullname,但是你永远不会将它作为字符串发送到渲染视图中。

使用@variableName语法将C#变量的值作为字符串发出:

@{ var fullname = new Fullname().getfullname(item.student_id.value).ToString(); }
<td>@fullname</td>

答案 1 :(得分:0)

在MVC中,交互发生在模型与视图之间,反之亦然。要在中间移动,我们需要发生一些事件,然后通过ajax或表单提交来处理。在这里,您尝试从某个控制器返回后引用类函数,这意味着不会触发任何事件,因此不会对该函数进行调用,也不会返回任何数据。但仍然可以肯定,因为你可以在你的功能上设置一个断点,并检查控件是否适用。