0

ASP.NET MVC Razorプロジェクトがあり、DropDownListからのデータがあり、 からからDatabase選択した値を挿入しようとしましたが、できませんでした。DropDownListDatabase

 <div class="editor-label">
        @Html.LabelFor(model => model.Parent_ID)
    </div>
    <div class="editor-field create-Bt3">
   @Html.DropDownList("-Select Parent-", new SelectList(ViewBag.Parent, "Value", "Text"),"- Select Parent -")

    </div>

 public ActionResult Create()
    {
        var data = db.Categories.ToList().Distinct();
        List<SelectListItem> items = new List<SelectListItem>();
        foreach (var t in data)
        {
            SelectListItem s = new SelectListItem();
            s.Text = t.Name;
            s.Value = t.Cat_ID.ToString();
            items.Add(s);
        }
        ViewBag.Parent = items;
        return View();
    }

    [HttpPost]
    public ActionResult Create(Category category, IEnumerable<HttpPostedFileBase> files)
    {

        if (Request.Files.Count > 0)
        {
            var uploadedFile = Request.Files[0];

            var fileSavePath = "";
            var fileName = "";


            fileName = Path.GetFileName(uploadedFile.FileName);
            fileSavePath = Server.MapPath("~/App_Data/Uploads/" + fileName);

            uploadedFile.SaveAs(fileSavePath);
            category.Path = "~/App_Data/Uploads/" + fileName;
        }

        category.Add_Date = DateTime.Now;
        category.Last_Update = DateTime.Now;

        db.Categories.Add(category);
        db.SaveChanges();

        return RedirectToAction("Index");
    }
4

2 に答える 2

0

onchangeのイベントを使ってみてくださいDropDownList

@Html.DropDownList("-Select Parent-", new SelectList(ViewBag.Parent, "Value", "Text"),"- Select Parent -",new { @onchange="submitData(this);" } )

JavaScript で、$.ajaxコントローラーを使用してそのデータを渡します。

<script type="text/javascript">
 function submitData(e){
   $.ajax({
                type: 'POST',
                dataType: 'json',
                url: '@Url.Action("Create", "Home")',
                data: ({ selectedValue: e.innerHTML }),
                success: function (result) {
                    alert('success');
                },
                error: function (result) {
                    alert('error');
                }
                return false;
   });
 }
</script>

次に、コントローラーにさらにパラメーターを追加します。

[HttpPost]
public ActionResult Create(string selectedValue, Category category, IEnumerable<HttpPostedFileBase> files)
{
   //Do Database stuff to insert the selected value to DB
}
于 2013-01-10T06:12:24.053 に答える
0

代わりに次のコードを使用します。

ビューでは、次のようにドロップダウンをバインドします。

@Html.DropDownListFor(model => model.User, new SelectList(Model.UserList, "Value", "Text"), new { @tabindex = "2" })

そして、次のようにモデルにプロパティを作成します。

public string User{ get; set; }
public List<SelectListItem> UserList{ get; set; }

そして、databae からデータをフェッチして、次のようにドロップダウンをバインドします。

public List<SelectListItem> GetUserTypeList()
{
        List<SelectListItem> listUsers = new List<SelectListItem>();
        using (DbCommand command = DataAccess.CreateCommandTypeSPWithOutputCursor())
        {
            command.CommandText = "GetUserList";
            command.CommandType = CommandType.StoredProcedure;               
            DataSet objDataSet = DataAccess.GetDataset(command);
            foreach (DataRow row in objDataSet.Tables[0].Rows)
            {
                SelectListItem user = new SelectListItem();
                user.Text = Convert.ToString(row["UserName"]).Trim();
                user.Value = Convert.ToString(row["UserID"]).Trim();
                listUsers.Add(user);
            }
        }
        return listUsers;
    }

コントローラー アクション メソッドで UserList をメソッド GetUserTypeList() に割り当て、最後に次のようにフォーム メソッドに HTML 全体を配置することを忘れないでください。

@using(Html.BeginForm("ActionName", "ControllerName", FormMethod.Post)) {
...
}

したがって、ドロップダウンで選択した値をデータベースに投稿する方法は次のとおりです。

于 2013-01-10T09:48:28.243 に答える