asp.net mvc用户控制问题

时间:2010-05-10 19:27:27

标签: asp.net asp.net-mvc

用户控制

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>

<%
    using (MvcApplication1.Models.EgovtDataContext _model = new MvcApplication1.Models.EgovtDataContext())
    {
%>

    <% foreach(var md in MvcApplication1.Models.) { %>
        <% if (md.ParentId == 0)
           { %>

        <% } %>
    <% } %>
   <%} %>

FeatureRepository类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcApplication1.Models
{
    public class FeaturesRepository
    {
        EgovtDataContext db = new EgovtDataContext();

        public IEnumerable<Feature> GetAllFeatures()
        {
            List<Feature> Features = new List<Feature>();
            Feature feature = new Feature();


            var AllParentFeatures = FeaturesByParentId(0);
            foreach (Feature frParentCategory in AllParentFeatures)
            {
                feature.int_FeatureId = frParentCategory.int_FeatureId;

                feature.vcr_FeaturesName = frParentCategory.vcr_FeaturesName;
                feature.int_ParentId = frParentCategory.int_ParentId;
                Features.Add(feature);


                var AllChildFeaturesofthatParent = FeaturesByParentId(frParentCategory.int_FeatureId);
                int AllChildFeaturesofthatParentCount = AllChildFeaturesofthatParent.Count();
                foreach (Feature frChildCategory in AllChildFeaturesofthatParent)
                {
                    feature.int_FeatureId = frParentCategory.int_FeatureId;

                    feature.vcr_FeaturesName = frParentCategory.vcr_FeaturesName;
                    feature.int_ParentId = frParentCategory.int_ParentId;
                    Features.Add(feature);
                }

            }
            return Features;

        }

    }
}

1)这是在上面的方法中正确完成的公共IEnumerable GetAllFeatures()吗?并正确编写了方法? 2)我想在上面的控件中调用GetAllFeatures方法?我该怎么办? 3)应该在共享文件夹中创建用户控制器?什么是共享文件夹?

3 个答案:

答案 0 :(得分:5)

创建控制器操作

public ActionResult All()
{
    return View(new FeaturesRepository().GetAllFeatures());
}

并更改您的usercontrol声明

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Feature>>" %>


<% foreach(var md in Model) 
   { %>
        <% if (md.ParentId == 0)
           { %>
               //blabla
        <% } %>
<% } %>

答案 1 :(得分:1)

您需要在控制器中创建此存储库类的实例,并使用实例调用返回所有功能的IList并访问模型中的Ilist的方法。

答案 2 :(得分:1)

上述方法看起来不错,但我不知道您的业务规则细节。只是一些代码语法更改会很好(比如使用大写F的功能,是错误的大小写)等等。

关于通话,您不能只从“查看”或“查看用户”控件调用上述方法。在渲染视图之前,必须使用此方法的数据填充ViewData或Model。另一种方法是使用JavaScript,特别是JSON调用,以从返回JsonResult或ContentResult或类似内容的操作中请求数据。

控制器操作应该典型地返回ActionResult或从中继承的类型(ContentResult,JsonResult,RedirectToActionResult等)。