Asp.net jQuery和@Html.TextBoxfor()
我目前拥有以下代码:Asp.net jQuery和@Html.TextBoxfor(),asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我目前拥有以下代码: [HttpPost] public ActionResult Index(IList<LocalPageModel> postPages, IEnumerable<HttpPostedFileBase> files) { if (ModelState.IsValid) { foreach (HttpPos
[HttpPost]
public ActionResult Index(IList<LocalPageModel> postPages,
IEnumerable<HttpPostedFileBase> files)
{
if (ModelState.IsValid)
{
foreach (HttpPostedFileBase file in files)
{
if ((file != null) && (file.ContentLength > 0))
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/"),
fileName);
file.SaveAs(path);
}
}
}
else
{
ManagePagesModel mod = new ManagePagesModel
{
PostPages = postPages
};
return View("Index", mod);
}
return RedirectToAction("Index");
}
<script>
var i = 0;
$("#add-page").click(function () {
i++
$("#page").append('<div id="page"> @Html.TextBoxFor(u => u.PostPages['+i+'].Title') </div>');
});
</script>
如何使它在用户单击JavaScript按钮时,新文本将附加到页面,并且
u.PostPages[x]
将增加?如果您想在客户端上完成所有操作(无AJAX),可能根本不使用MVC帮助程序,而是手动执行-您知道将呈现的HTML,因此只需执行以下操作:
var i = 0;
$("#add-page").click(function () {
$("#page").append('<input type="text" name="PostPages[' + (i++) + '].Title">');
});
var i=0;
$(“#添加页面”)。单击(函数(){
$(“#页”)。附加(“”);
});
也许可以稍微清理一下代码,这样引号就不会太混乱,但您会想到…要增加u.PostPages[x],您可以使用以下代码:
[HttpPost]
public ActionResult Index(IList<LocalPageModel> postPages,
IEnumerable<HttpPostedFileBase> files)
{
if (ModelState.IsValid)
{
foreach (HttpPostedFileBase file in files)
{
if ((file != null) && (file.ContentLength > 0))
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/"),
fileName);
file.SaveAs(path);
}
}
}
else
{
ManagePagesModel mod = new ManagePagesModel
{
PostPages = postPages
};
return View("Index", mod);
}
return RedirectToAction("Index");
}
<script>
var i = 0;
$("#add-page").click(function () {
i++
$("#page").append('<div id="page"> @Html.TextBoxFor(u => u.PostPages['+i+'].Title') </div>');
});
</script>
var i=0;
$(“#添加页面”)。单击(函数(){
我++
$(“#page”).append('@Html.TextBoxFor(u=>u.PostPages['+i+'].Title');
});
下面是一个小的工作示例:您没有通过视图,但我假设您的顶部有以下内容:
@model = ManagePagesModel
如果是这种情况,则可以使用以下@foreach循环页面模型:
$("#add-page).click(function() {
@foreach(var pageModel in Model.PostPages){
$("#page").append('<div id="page"> @Html.TextBoxFor(u => pageModel.Title) </div>');
});
$(“#添加页面)。单击(函数(){
@foreach(Model.PostPages中的var pageModel){
$(“#page”).append('@Html.TextBoxFor(u=>pageModel.Title');
});
我看不出这是可行的。我想它会在页面加载时抛出一个异常,因为你正在将一个javascript变量传递给serversude html helper。@Stephen我已经编辑了一点我的答案。在那一刻,它还不是一个html.helper。它只是一个你附加在div中的文本。我不会和你争论,并把它放在这里:如果它只是文本,你就可以在div中追加而不是Html帮助程序,如果字符串终止正确(而不是错误的话),您只需要在div中填充@Html.TextBoxFor(u=>u.PostPages[whatevercounter i位于].Title')
。