嗨我有 MVC Razor 应用程序作为电子目录,我使用下拉列表绑定来自 DB 的数据,但 DDl 绑定来自 DB 的相同值,好像我有三个类别" x,Y,Z" DDL 返回了类似的值" Z,Z,Z"。因为它有最后一个值" y" 。我也尝试插入所选的值" ID"用户从 DDL 中选择项目时到数据库,但我无法返回错误的选定值。
public class CategoryController : Controller
{
private AndriodContext db = new AndriodContext();
List<SelectListItem> items = new List<SelectListItem>();
List<string> category = new List<string>();
SelectListItem s = new SelectListItem();
//
// GET: /Category/
public ActionResult Index()
{
var x = db.Categories.Where(y => y.Active == true).ToList();
return View(x);
}
public ActionResult Create()
{
var data = db.Categories.ToList().Distinct();
List<string> x = new List<string>();
foreach (var t in data)
{
s.Text = t.Name;
s.Value = t.Cat_ID.ToString();
items.Add(s);
}
ViewBag.Parent = items;
return View();
}
//
// POST: /Category/Create
[HttpPost]
public ActionResult Create(Category category, IEnumerable<HttpPostedFileBase> files)
{
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);
if (s.Selected)
{ category.Parent_ID = int.Parse(s.Value); }
}
db.Categories.Add(category);
db.SaveChanges();
return RedirectToAction("Index");
}
}
@using(Html.BeginForm(&#34; Create&#34;,&#34; Category&#34;,FormMethod.Post,new {enctype =&#34; multipart / form-data&#34;,@ data_ajax =&#34; false&#34;})) { @ Html.ValidationSummary(真)
<fieldset>
<legend></legend>
<div class="editor-field create-Bt3">
@Html.DropDownList("Parent", new SelectList(ViewBag.Parent, "Value", "Text"), "- Select Parent -")
</div>
<div>
<p class="create-Bt ">
<input type="submit" value="Create" />
</p>
</div>
<br />
<br />
<div>
@Html.ActionLink("Back to List", "Index")
</div>
</fieldset>
}
答案 0 :(得分:0)
使用模型绑定下拉列表而不是ViewBag的最佳做法。
如果你不想使用模型,你可以做一个技巧。
您在视图页面中放置了一个隐藏字段(<input type="hidden" name="hdnParent" id="hdnParentId" />
),并使用以下方法通过简单的jquery计算dropdownlis的选定值:
$("#Parent").val();
。
制作下拉列表:
@Html.DropDownList("Parent", new SelectList(ViewBag.Parent, "Value", "Text"), "- Select Parent -",new{ id="Parent" });
之后,您将在控制器的HTTPPOST中获得一个字符串参数:
[HttpPost]
public ActionResult Create(string hdnParent) //hdnParent is the name of dropdownlist
{
//now you can get the seleced value from "hdnParent".
//do the stuffs
return View();
}
答案 1 :(得分:0)
您需要在viewpage中导入jquery 1.7.1.min.js(DOM):
从jquery网站(http://blog.jquery.com/2011/11/21/jquery-1-7-1-released/)获取jquery DOM。
然后点击按钮(<input type="submit" value="Create" onclick="GetDropDownValue();"/>
):
写了一个javascript函数:
<script type="text/javascript" language="javascript">
function GetDropDownValue()
{
$("#hdnParentId").val($("#Parent").val());
}
</script>