Skip to main content

Function in Razor view (@helper in razor)


We can create function in cshtml by using @helper syntax

syntax:
@helper <FunctionName>(paramtype param1)
{
//your custom logic
}
Here the function is same as the one we write in class file except  "@helper" .
This function can be invoked from any where in the view simply like this
@FunctionName(param1);

@helper syntax enables in code reusability
scenario : Following code implements recursive function using @helper in view

@helper Recurson(IEnumerable<Menu> nodes, int? parentId)
{
    if (nodes.Any(n => n.ParentId == parentId))
    {
        <ul>
            @foreach (var node in nodes.Where(n => n.ParentId == parentId))
            {
                <li>
                    @node.Name
                    @Recursion(node.Menus, node.Id)
                </li>
            }
        </ul>
    }
}
        @Recurson(Model.Menus, Model.Id)
   
In Above Code Menu Contains hierarchical data which will be iterated over to generate unordered list of the data.

For Complete working  code please refer to my post : Implementing  JsTree in Asp.net MVC


Comments

Popular posts from this blog

Using SqlDataAdapter to fill DataTable in c#

public DataTable List(string sql)         {             SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);             SqlCommand cmd = new SqlCommand(sql, con);             DataTable dt = new DataTable();             SqlDataAdapter da = new SqlDataAdapter(cmd);             try             {                              con.Open();                 da.Fill(dt);             }             finally             {                 con.Close();          ...

Converting List to DataTable in C#

public static DataTable ConvertToDataTable<T>(IList<T> data)         {             PropertyDescriptorCollection properties =                TypeDescriptor.GetProperties(typeof(T));             DataTable table = new DataTable();             foreach (PropertyDescriptor prop in properties)                 table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);             foreach (T item in data)             {                 DataRow row = table.NewRow();                 foreach (PropertyDescriptor prop in properties)                     row[prop.Name]...