我想从解析并发送该值的操作向视图发送参数。问题是,当参数“到达”视图时,它到达null时,在我尝试管理它时会出现错误。
我在动作中的代码是(它创建参数并发送它):
for (var i=0; i<client_jobs.length; i++) {
if(current_job == client_jobs[i].id){
var option = document.createElement("option");
option.value = client_jobs[i].id;
option.setAttribute("selected", "selected");
option.appendChild(document.createTextNode(client_jobs[i].label));
sel.append(option);
}else{
var option = document.createElement("option");
option.value = client_jobs[i].id;
option.appendChild(document.createTextNode(client_jobs[i].label));
sel.appendChild(option);
}
}
因此,管理发送的参数的操作是(注意我将参数作为可空值传递以避免错误,并且参数的名称与我之前用于调用RedirectToAction的名称相同):
public ActionResult CreateAccount(Account model)
{
try
{
if (ModelState.IsValid)
{
_repository = new Repository();
model.PublicadorId = GetPublicadorId();
model.CreatedDate = DateTime.Now;
model.ModifiedDate = DateTime.Now;
model.IsActive = true;
Int32 id = _repository.Store(model);
return RedirectToAction("SubirImagenes/" + id, "Account");
}
}catch{}
}
任何帮助将不胜感激。我的应用程序的路由选择是:
[HttpPost]
[AuthorizeUser]
[ValidateAntiForgeryToken]
public ActionResult UploadImage(CompraVenta.Models.UploadFileModel fileModel, Int32? id)
{
string directory = @"C:\Folder\";
if (ModelState.IsValid)
{
if (fileModel != null && fileModel.File != null && fileModel.File.ContentLength > 0)
{
var fileName = Path.GetFileName(fileModel.File.FileName);
fileModel.File.SaveAs(Path.Combine(directory, fileName));
}
return RedirectToAction("Index");
}
return View();
}
[AuthorizeUser]
public ActionResult SubirImagenes()
{
return View();
}
答案 0 :(得分:1)
您使用方式错误,您必须使用RedirectToAction()
的{{3}}传递参数,该参数将RouteValueDictionary
的对象作为参数。
这样做:
return RedirectToAction("UploadImage", "Account", new {id = id});
如果操作 HttpPost ,则无法按上述方式传递参数,解决方法是直接调用操作而不使用RedirectToAction
,如:
return UploadImage(null,id);
答案 1 :(得分:0)
您可以为RedirectToAction
添加匿名对象以获取操作参数:
return RedirectToAction("Index", "Home", new {id = id});
答案 2 :(得分:0)
直接调用方法,而不是使用RedirectToAction,如:
return UploadImage(null,id);
而不是
return RedirectToAction("UploadImage/" + id, "Account");
注意: - 浏览器中的地址是旧方法
答案 3 :(得分:0)
最后我找到了解决方案。在“获取”动作“SubirImagenes”中我得到参数,然后,使用强类型模型,使用隐藏字段,我在“post”操作中传递参数,在我传递的模型中接收它作为该帖子中的参数动作。