1

お問い合わせエリアに移動すると、アプリケーションはこれを返します。現在、作業エリア、パンフレット、お問い合わせ、およびフォローする 3 分の 1 (支払い) が必要です。パンフレット エリアに移動すると、エラーは表示されません。

以下に示すように、エラーがスローされているビューにエリアパラメーターを追加しようとしました。文字列を空白のままにし、照会を使用します。

@Html.Action("DropDownList", "Enquiry Base", new { type = "titles", areas = ""})

@Html.Action("DropDownList", "Enquiry Base", new { type = "titles", areas = "Enquiry"})

どちらもエラーを解決していません。

現在、ドロップダウンリストを表示するために、ルートにビューモデル、部分ビュー、ユニティ ブートストラップがあります。

ItemsViewModel

public class DropDownListItem
{
    public string Text { get; set; }
    public string Value { get; set; }
}

public class ItemsViewModel
{
    private readonly List<DropDownListItem> _items;

    public string SelectedItem { get; set; }

    public IEnumerable<SelectListItem> Items
    {
        get
        {
            var allItems = _items.Select(i => new SelectListItem
                {
                    Value = i.Value,
                    Text = i.Text
                });
            return DefaultItem.Concat(allItems);
        }
    }

    public IEnumerable<SelectListItem> DefaultItem
    {
        get
        {
            return Enumerable.Repeat(new SelectListItem
                {
                    Value = "",
                    Text = Mui.please_select
                }, count: 1);
        }
    }

    public ItemsViewModel()
    {

    }

    public ItemsViewModel(List<DropDownListItem> items, string selected)
    {
        _items = items;
        SelectedItem = selected;
    }

ドロップダウンパーシャル

@using MBS.Exec.Mvc.ViewModels
@model ItemsViewModel

@Html.DropDownListFor(m => m.SelectedItem, Model.Items)

ブートストラップ

public static class Bootstrapper
{
    public static void Initialise()
    {
        var container = BuildUnityContainer();

        DependencyResolver.SetResolver(new UnityDependencyResolver(container));

        GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container);
    }

    private static IUnityContainer BuildUnityContainer()
    {
        var container = new UnityContainer();

        container.RegisterType<IBrochureModel, MilitaryBrochureViewModel>();
        container.RegisterType<IBrochureModel, GeneralBrochureViewModel>();
        container.RegisterType<IBrochureModel, StandardBrochureViewModel>();
        container.RegisterType<IBrochureModel, StudentBrochureViewModel>();

        container.RegisterType<IEnquiryModel, MilitaryEnquiryViewModel>();
        container.RegisterType<IEnquiryModel, GeneralEnquiryViewModel>();
        container.RegisterType<IEnquiryModel, StandardEnquiryViewModel>();
        container.RegisterType<IEnquiryModel, StudentEnquiryViewModel>();

        container.RegisterType<IFormData, FormData>();
        container.RegisterType<IRESTExecutiveService, RESTExecutiveService>();

        return container;
    }

領域でドロップダウンを使用するために、EnquiryBaseController で DropDownList ActionResult を作成しました。

[ChildActionOnly]
    public ActionResult DropDownList(string type, string selected)
    {
        if (type == "titles")
        {
            var items = new ItemsViewModel(
                (from g in _service.GetTitles() select new DropDownListItem { Text = g.Value, Value = g.Value }).ToList(),
                selected);

            return PartialView("DropDownPartial", items);
        }
        else if (type == "leadSources")
        {
            var items = new ItemsViewModel(
                (from g in _service.GetLeadSources() select new DropDownListItem { Text = g.Value, Value = g.Value }).ToList(),
                selected);

            return PartialView("DropDownPartial", items);
        }

        return null;
    }

次に、上記の @Html.Action コードを使用して、ドロップダウンをビューにレンダリングします。

このエラーがスローされる理由は誰にもわかりますか?

4

1 に答える 1

0

電話すると

@Html.Action("DropDownList", "Enquiry Base", new { type = "titles", areas = ""}) 

コントローラー名の文字列にスペースがあります。

これを試して:

@Html.Action("DropDownList", "EnquiryBase", new { type = "titles", areas = ""})

エラーが「/enquiry/」になる理由は、文字列の最初の部分しか読み取っていないためだと思います。

于 2013-04-05T11:59:36.147 に答える