0

レシピを提出するためのウェブページがあります。材料には5つのフィールドがあります。レシピに5つ以上の材料が必要な場合は、「別の材料を追加する」ボタンがあり、一部のJavaスクリプトは、使用する別の材料入力をロードします。
このデータをMVC4/C#であるバックエンドに適切にPOSTする方法がわかりません。

それらすべてに同じid=ingredientを与えて、文字列ingrdient []として収集できますか?または、入力の数が変わる可能性がある場合にフォーム入力を取得するためのベストプラクティスは何ですか?

ありがとう。

4

3 に答える 3

3

角かっこで同じ名前を付ける場合は、フォームを送信するときに配列としてそれらに到達できるはずです。

<input type="text" name="data[]" value="">
于 2012-08-09T01:19:55.563 に答える
3

ここにサンプルがあります:このアプローチを使用できます:

 <div class="editor-field">
        <input type="text" name="MyModelArray[0].Sugar" value="" />
        <input type="text" name="MyModelArray[1].Tea" value="" />
        <input type="text" name="MyModelArray[0].Sugar" value="" />
        <input type="text" name="MyModelArray[1].Tea" value=""/>
    </div>
    <p>
        <input type="submit" value="Create" />
    </p>

これで、次を使用してコントローラーでこれを取得できます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Index(List<Ingredient> MyModelArray) //Put a breakpoint here to see 
        {
            return View();
        }
        [HttpPost]
        public ActionResult About(List<string> MyStringArray) //Use this if you don't want a model
        {
            return View();
        }
    }
    public class Ingredient
    {
        public string Sugar { get; set; }
        public string Tea { get; set; }
    }
}
于 2012-08-09T06:07:41.583 に答える
0

MVC4に関する限り、最善のアプローチは正確にはわかりませんが、すべての入力に同じ名前HttpContext.Request.Paramsを付けることができ、送信後、オブジェクトを見るだけでサーバー側でそれらを取得できるはずです。

于 2012-08-09T01:20:09.377 に答える