2

Couchbase バックエンドを使用して Web アプリを構築しようとしています。

私がやろうとしているのは、すべての「フォーム」を返すことですが、このエラーが発生します The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/forms/Index.aspx ~/Views/forms/Index.ascx ~/Views/Shared/Index.aspx ~/Views/Shared/Index.ascx ~/Views/forms/Index.cshtml ~/Views/forms/Index.vbhtml ~/Views/Shared/Index.cshtml ~/Views/Shared/Index.vbhtml

これが私のコントローラーです:

public class FormsController : Controller
    {
        public FormRepository formRepository { get; set; }

        public FormsController()
        {
            formRepository = new FormRepository();
        }
        //
        // GET: /Forms/

        public ActionResult Index()
        {
            var forms = formRepository.GetAll();
            return View(forms);
        }
}

FormRepository は次のとおりです。

public class FormRepository : RepositoryBase<Form>
{

}

リポジトリベースは次のとおりです。

public abstract class RepositoryBase<T> where T : ModelBase
    {
        private readonly string _designDoc;

        protected static CouchbaseClient _Client { get; set; }


        static RepositoryBase()
        {    
            _Client = new CouchbaseClient();

        }

        public RepositoryBase()
        {
            _designDoc = typeof(T).Name.ToLower().InflectTo().Pluralized;
        }

        public virtual IEnumerable<T> GetAll()
        {
            return _Client.GetView<T>(_designDoc, "all", true);
        }
    }

ここに私のインデックスがあります:

@model IEnumerable<QuickQuote.Models.Form>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.FormTitle)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Type)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.FormTitle)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Type)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
        </td>
    </tr>
}

</table>

ここに私の Global.asax.cs があります:

public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterModelViews(IEnumerable<Assembly> assemblies)
        {
            var builder = new ViewBuilder();
            builder.AddAssemblies(assemblies.ToList());
            var designDocs = builder.Build();
            var ddManager = new DesignDocManager();
            ddManager.Create(designDocs);
        }

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            RegisterModelViews(new Assembly[] { Assembly.GetExecutingAssembly() });
        }
    }

私が作成した Couchbase View と関係があるのでしょうか、それとも別のことでしょうか? 助けてください!この段階でやりたいことはGetAll()、Couchbase に保存されているすべてのドキュメントを返すことですが、そうするとすぐにlocalhost/formsこのエラーがスローされます。

4

1 に答える 1

4

Views/Formsという名前のファイルのフォルダーを探していますIndex.cshtml(またはIndex.aspx、Razorを使用していない場合)

(ビューを探している場所に基づいて)ActionResultを正しくヒットしているように見えるので、ビュー名が間違っていると思います

これがデプロイされたアプリで発生している場合は、ビルド アクションが正しくなく、ファイルがコピーされていない可能性があります。

于 2013-06-27T14:31:17.670 に答える