C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■14819  Re[8]: 時間について
□投稿者/ アゲハチョウ -(2008/02/27(Wed) 14:09:52)
    No14402 (うそーん さん) に返信
    > ■No14400 (アゲハチョウ さん) に返信
    >>解決しました
    >
    > どういうふうにして?

    独学で解決しました。
    皆さんありがとうございます!
記事No.14389 のレス /過去ログ31より / 関連記事表示
削除チェック/

■51614  Re[2]: 線形リストの確認
□投稿者/ 774RR -(2010/07/12(Mon) 10:46:56)
記事No.51572 のレス /過去ログ87より / 関連記事表示
削除チェック/

■62915  Re[3]: コンボボックスで日付を選択したいのですが
□投稿者/ みきぬ -(2011/11/10(Thu) 10:52:09)
    既にあがってるけど、 DateTimePicker を使ったほうがいいよ。
    日付の31項目をコンボボックスから選ばせるという時点で個人的にはかなりビミョーだけども

    > For i = 1990 To 2100
    > year_Combo.Items.Add(i)
    > Next

    111項目!? 鬼でつか!?
記事No.62909 のレス /過去ログ105より / 関連記事表示
削除チェック/

■74336  Re[3]: Asp.net Mvc データ登録方法について
□投稿者/ ainax -(2014/12/18(Thu) 19:41:07)
    No74262 (WebSurfer さん) に返信
    
    お返事が遅くなり、申し訳ありません。
    
    やっと紹介して頂いた URL 先を確認し、実現したかった機能について
    完成致しました。
    
    まず環境は下記のとおりです。
    Windows 7 Pro 64bit, VS Express 2013 for Web, .NET Framework4, ASP.NET MVC 4, インターネットアプリケーションテンプレート使用, 今回はデータベース未使用, EF5, IE11
    
    ●やりたいこと
    1:nモデルのビューでの登録方法について
    
    @親と子の入力フィールドは1画面で収めたい
    A子のレコードは追加、削除をしたい
    B親のレコード登録時に子のレコードも追加したい
    
    ●モデル
        public class VMParent
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public virtual List<VMChild> Children { get; set; }
        }
        
        public class VMChild
        {
            public int ID { get; set; }
            public string Name { get; set; }
        }
    
    ●Create ビュー
    @model AspdotNetTest.Model.VMParent
    
    @using (Html.BeginForm()) {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)
    
        <fieldset>
            <legend>VMParent</legend>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Name)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Name)
                @Html.ValidationMessageFor(model => model.Name)
            </div>
    
            <p>
                <input type="submit" name="cmd" value="Create" />
            </p>
        </fieldset>
    }
    
    @* 子の入力フィールドが表示され、部分更新される個所 *@
    <div id="AjaxUpdate">
        @Html.Partial("_Children", Model)
    </div>
    
    ●_Children 部分ビュー
    @model AspdotNetTest.Model.VMParent
    @{
        ViewBag.Title = "Create";
        TempData["Parent"] = Model;
    }
    @using (Ajax.BeginForm("editChild", "PartialTest", new AjaxOptions {UpdateTargetId="AjaxUpdate" }))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)
    
        <fieldset>
            <legend>VMParent</legend>
    
            <div class="editor-label">
                @Html.Label("名前")
            </div>
            <div class="editor-field">
                @Html.Editor("AddName")
                @Html.ValidationMessage("AddName")
                <input type="submit" name="cmd" value="Add" />
            </div>
            
    
            @foreach (var child in Model.Children.Select((item, index) => new { item, index }))
            {
                @Html.Label(child.item.Name)    
                <input type="submit" name="cmd" value="Delete" onclick="setDeleteIndex(@child.index)" />
            }
    
            @Html.Hidden("DeleteIndex")
    
    <script language="JavaScript">
        function setDeleteIndex(id) {
            $("input[id='DeleteIndex']").val(id);
        }
    </script>
    
        </fieldset>
    }
    
    ●コントローラ
    public ActionResult Create(VMParent parent = null)
            {
                if (parent.Children == null)
                {
                    // テストデータ挿入(通常はインスタンス生成のみ)
                    parent = new VMParent()
                    {
                        Name = "山田太郎",
                        Children = new List<VMChild>()
                        {
                            new VMChild() { ID = 1, Name="一郎" },
                            new VMChild() { ID = 2, Name="次郎" },
                        }
                    };
                }
    
                return View(parent);
            }
    
            [HttpPost]
            public ActionResult Create(FormCollection collection, string Name)
            {
                try
                {
                    // TempData から VMParent モデルを持ってくる
                    var parent = (AspdotNetTest.Model.VMParent)TempData["Parent"];
    
                    parent.Name = Name;
    
                    // DB にデータを記録する処理はここに入れる。
    
                    return RedirectToAction("Index");
                }
                catch
                {
                    return View();
                }
            }
    
            public ActionResult editChild(string cmd, string AddName, string DeleteIndex)
            {
                ModelState.Clear(); // これを入れないと事前に入っている文字が消えない
    
                // TempData から VMParent モデルを持ってくる
                var parent = (AspdotNetTest.Model.VMParent)TempData["Parent"];
    
                if (cmd == "Add")
                {
                    // 追加ボタンが押されたときは、AddName を追加
                    parent.Children.Add(new VMChild() { Name = AddName });
                }
                else if (cmd == "Delete")
                {
                    // 削除ボタンが押されたときは、指定のインデックスを削除
                    parent.Children.RemoveAt(Convert.ToInt32(DeleteIndex));
                }
    
                return PartialView("_Children", parent);
            }
    以上のような形になりました。
    
    
    現在 VMParent モデルのビューとコントローラのやり取りを、 TempData を使って
    いるのですが、この処理の仕方で問題ないのでしょうか?
    
    通常は BeginForm 内でモデルのフィールドを使って Submit し、
    コントローラのメソッドでバインディングが行われる(?)と思うのですが、
    うまく取得できなかったため、このような仕様になりました。
    (その他にも、 AntiforgeryToken や ValidationSummary の動きもよくわかっていないのですが・・・)
    
    「これで問題ない」や「普通はこうやるべき」というようなご助言がありましたら、
    ご教示頂ければ幸いです。
    
    よろしくお願い致します。
記事No.74261 のレス /過去ログ125より / 関連記事表示
削除チェック/

■88992  Re[2]: Windows10に関する質問2点
□投稿者/ くま1 -(2018/10/24(Wed) 14:37:00)
    御回答有難うございます。

    大変申し訳ございませんが、今気付いたばかりかりで、
    OSの事書き忘れました! 
    OSはWindows 10です。

記事No.88963 のレス /過去ログ153より / 関連記事表示
削除チェック/

■88995  Re[3]: Windows10に関する質問2点
□投稿者/ 魔界の仮面弁士 -(2018/10/24(Wed) 15:08:42)
    No88992 (くま1 さん) に返信
    > 御回答有難うございます。
    その後の状況はどうでしょう?

    > 大変申し訳ございませんが、今気付いたばかりかりで、
    > OSの事書き忘れました! 
    > OSはWindows 10です。
    質問時のタイトルに書いてありましたよ。
記事No.88963 のレス /過去ログ153より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -