0

特定のレコードの [編集] リンクをクリックすると、ビュー カミソリでコントローラーからその ID のデータを取得し、編集用のフォームに表示します。しかし、それはエラーをスローしています。データベースからデータを取得していますが、ビューにアクセスするとすぐに各フィールドにエラーがスローされます。

エラー:

コンパイラ エラー メッセージ: CS1061: 'System.Collections.Generic.IEnumerable' には 'AppName' の定義が含まれておらず、タイプ 'System.Collections.Generic.IEnumerable' の最初の引数を受け入れる拡張メソッド 'AppName' が見つかりませんでした ( using ディレクティブまたはアセンブリ参照がありませんか?

Source Error:
Line 8:      <fieldset>   
Line 9:      <div class="editor-label grid_2">
Line 10:         @Html.LabelFor(model => model.AppName) :
Line 11:     </div>
Line 12:     <div class="editor-field grid_3">

何が間違っているのかわかりません。これが私のコードです:

[編集] リンクをクリックすると呼び出されるコントローラー:

  [Authorize]
        public ActionResult UpdateAPIForm(string id,string appname)
        {
            try
            {
                var a = HttpContext.User.Identity.Name;
                var context = new ndCorp_SiteEntities();

                var viewModel = (from du in context.DevUserInfoes
                                join dc in context.DevContactInfoes on du.UserName equals dc.UserName
                                join dm in context.DevMarketplaceInfoes on du.UserName equals dm.UserName
                                join dm1 in context.DevMarketplaceInfoes on dc.AppName equals dm1.AppName
                                where (du.UserName == a && dc.AppName == appname )
                                select new NewAPIFormModel()
                                    { 
                                        AppName = dc.AppName, 
                                        Email = dc.DevEmail ,
                                        OrgName = dc.OrgName ,
                                        DevName = dc.DevName ,
                                        ClientID = dc.ClientID ,
                                        ClientSecret = dc.ClientSecret ,
                                        RedUrl = dc.Url ,
                                        AppNameForMP = dm.NewAppNameForMP ,
                                        AppDesc = dm.AppDesc ,
                                        DoYouAgree = dm.DispInPublicMP.Value ,
                                        mobil = dm.ChkMobility.Value ,
                                        legal = dm.ChkLegal.Value ,
                                        docmgm = dm.ChkDocMgm.Value ,
                                        finser = dm.ChkFinSer.Value ,
                                        microoff = dm.ChkMicOff.Value  ,
                                        saleforce = dm.ChkSalesForce.Value ,
                                        scanner = dm.ChkScanMF.Value ,
                                        wordper = dm.ChkWordPer.Value ,
                                        deskext = dm.ChkDeskExt.Value ,
                                        other = dm.ChkOther.Value ,
                                        //updlogo = dm.UpdLogo,
                                       // pricing =Convert.ToString(dm.Pricing),
                                        pricingURL = dm.UrlPricing,
                                        contactinfo = dm.Contact,
                                    }).ToList();
                                //select dc;
                return View(viewModel);
                //return View();
            }
            catch (Exception ex)
            {
                Console.Write(ex);
                TempData["msg"] = ex.Message.ToString();
                return View();
            }
        }   

これが私の見解です:

@model IEnumerable<N.Models.NewAPIFormModel>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>   
    <div class="editor-label grid_2">
        @Html.LabelFor(model => model.AppName) :
    </div>
    <div class="editor-field grid_3">
        @Html.TextBoxFor(model => model.AppName, new { @class = "demo-field-longer" })
    </div>
     <div class="editor-label1 grid_2">
        Must be unique
    </div>
    <div class="grid_3 error long" style="margin-left:250px">
    @Html.ValidationMessageFor(model => model.AppName)
    </div>


    <div class="clear"></div>
    <div class="editor-label grid_2">
        @Html.LabelFor(model => model.Email):
    </div>
    <div class="editor-field grid_3">
        @Html.TextBoxFor(model => model.Email, new { @class = "demo-field-longer" })
    </div>
    <div class="grid_3 error long" style="margin-left:250px">
    @Html.ValidationMessageFor(model => model.Email)
    </div>


      <div class="clear"></div>
    <div class="editor-label grid_2">
        @Html.LabelFor(model => model.DevName):
    </div>
    <div class="editor-field grid_3">
        @Html.TextBoxFor(model => model.DevName, new { @class = "demo-field-longer" })
    </div>
    <div class="grid_3 error long" style="margin-left:250px">
    @Html.ValidationMessageFor(model => model.DevName)
    </div>
    .
    .
    .
    .
 <div class="editor-field grid_2 submit">
        <input type="submit" value="Submit" id="demo-submit-button"/><br />
        @ViewData["DemoMessage"]
    </div>
    </fieldset>

そして、ここに私のモデルがあります:

 public class NewAPIFormModel
    {
        [Required]
        [Email]
        [DisplayName("Developer Email")]
        public string Email { get; set; }


        [Required]
        [DisplayName("Application Name")]
        public string AppName { get; set; }

        [Required]
        [DisplayName("Organization Name")]
        public string OrgName { get; set; }

        [Required]
        [DisplayName("Developer Name")]
        public string DevName { get; set; }

        [Required]
        [DisplayName("App Key/ClientID")]
        public string ClientID { get; set; }

        [Required]
        [DisplayName("Client_Secret")]
        public string ClientSecret { get; set; }

        [Required]
        [DisplayName("Redirect_url")]
        public string RedUrl { get; set; }

        [Required]
        [DisplayName("Application Name")]
        public string AppNameForMP { get; set; }

        [Required]
        [DisplayName("Application Description")]
        public string AppDesc { get; set; }
.
.
.
.
4

1 に答える 1

0

モデルを、プロパティを含まないNewAPIFormModelsのコレクションとして定義しましたAppName。実際、その中のオブジェクトにはそのプロパティがあります。NewAPIFormModelモデルとしてシングルが必要です。ToList()そのためには、関数を使用してクエリを具体化しないで ください。

どちらFirst()かを使用するかFirstOrDefault()、ニーズに応じて使用する必要があります。

var viewModel = (linq query here).First();
  • 選択クエリが常に何かを返すと確信している場合は、First()それがより理にかなっています。

  • それ以外FirstOrDefault()の場合は、結果がnullの場合に対応し、ケースを処理します。

NewAPIFormModelこのようにして、単一のオブジェクトを保持しているコレクションではなく 、単一のオブジェクトを取得できNewAPIFormModelます。

ビューで、強く型付けされたモデルを次のように定義します。

@model N.Models.NewAPIFormModel
于 2013-01-22T00:21:27.430 に答える