Asp.net mvc 4 MVC4使用ActionLink和TempData从控制器中的文本框发送数据以查看
有没有一种方法可以利用带有ActionLink的TempData将数据从视图传递到控制器。我有一个具有客户端验证的视图,我需要在不使用提交按钮的情况下从页面上的文本框更新下拉列表。当使用两个提交类型按钮时,客户端验证会标记所有尚未填写的字段。本质上,我希望能够将用户定义的类别添加到下拉列表中,而无需跳转到不同的视图,只需一个文本框和提交按钮 我不确定我是否可以这样做:Asp.net mvc 4 MVC4使用ActionLink和TempData从控制器中的文本框发送数据以查看,asp.net-mvc-4,actionlink,tempdata,Asp.net Mvc 4,Actionlink,Tempdata,有没有一种方法可以利用带有ActionLink的TempData将数据从视图传递到控制器。我有一个具有客户端验证的视图,我需要在不使用提交按钮的情况下从页面上的文本框更新下拉列表。当使用两个提交类型按钮时,客户端验证会标记所有尚未填写的字段。本质上,我希望能够将用户定义的类别添加到下拉列表中,而无需跳转到不同的视图,只需一个文本框和提交按钮 我不确定我是否可以这样做: <input type="text" name="NewCat" value="@TempData["newCat"]"
<input type="text" name="NewCat" value="@TempData["newCat"]" placeholder="New Catagory"/>
如果您想在客户端更新数据,请使用jQuery,特别是在不需要返回服务器获取数据的情况下。使用元素的click事件处理和操作客户端数据。差不多
$("#addmore").on('click', function() {
$("#someSelect").append('<option value="someoption">Some Option</option>');
});
$(“#添加更多”)。在('click',function()上{
$(“#someSelect”).append('someoption');
});
这是我的解决方案
我提出了部分意见
主视图
<div class="asideRight">
<fieldset>
<legend></legend>
@Html.Partial("_AddCat", new Exercise4.Models.Category())
</fieldset>
</div>
这将仅在本地更新ddl,而不会将其添加到数据库中。最好关闭客户端验证,提交整个表单供控制器处理,并在验证模型以添加报价之前重定向回。至少我倾向于这样。在函数中,您还可以向服务器发送一个ajax帖子来更新数据。这与ajax不太熟悉。你能给我举个例子吗?
$("#addmore").on('click', function() {
$("#someSelect").append('<option value="someoption">Some Option</option>');
});
<div class="asideRight">
<fieldset>
<legend></legend>
@Html.Partial("_AddCat", new Exercise4.Models.Category())
</fieldset>
</div>
@model Exercise4.Models.Category
<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@using (Html.BeginForm("addCat", "Quote")) {
@Html.ValidationSummary(true)
<fieldset>
<legend class="myLegend">Create New Category</legend>
<div class="editor-field">
@Html.EditorFor(model => model.CatName)
</div>
<p>
<input class="mySubmit" type="submit" value="Create" />
</p>
</fieldset>
<div class="myValidation">
@Html.ValidationMessageFor(model => model.CatName)
@Html.ValidationMessage("")
</div>
}
[HttpPost]
[Authorize]
public ActionResult addCat(Category cat)
{
if (cat.CatName != null)
{
bool exists = db.Categories.Any(n => n.CatName.ToLower() == cat.CatName.ToLower());
if (!exists)
{
db.Categories.Add(cat);
db.SaveChanges();
}
else
{
ModelState.AddModelError("", "You entered a duplicate Category Name");
}
}
ViewBag.CategoryID = new SelectList(db.Categories.OrderBy(n => n.CatName), "CategoryID", "CatName");
return RedirectToAction("Create");
}