Nid*_*esh 8 entity-framework image razor asp.net-mvc-3
在我的ASP.Net MVC3 Razor项目中,我必须将值从视图传递给控制器.视图包含一个提交按钮,用于传递所选图像文件和另外两个输入数据.这两个输入数据来自名为"FileUpload"的控制器(ViewBag.Data1 = CusId; ViewBag.Data2 = Name;).提交按钮时,我必须将这三个(Image,CusId,Name)传递给另一个控制器以上传图像文件.
控制器代码
public ActionResult FileUpload(int CusId, string Name)
{
ViewBag.Data1 = CusId;
ViewBag.Data2 = Name;
return View();
}
[HttpPost]
public ActionResult UploadPhoto(ElixiCustPro elixi, HttpPostedFileBase file)
{
//return null;
try
{
if (file != null && file.ContentLength > 0)
{
if ((file.ContentType == "image/jpeg") || (file.ContentType == "image/gif") || (file.ContentType == "image/png"))//check allow jpg, gif, png
{
elixi.Image = new byte[file.ContentLength];
file.InputStream.Read(elixi.Image, 0, file.ContentLength);
var filename = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/ElixirFiles/UploadImagesElixir/"), filename);
file.SaveAs(path);
ecp.Image = new byte[file.ContentLength];
ecp.ImageUrl = path;
ment.ElixiProData.Add(ecp);
ment.SaveChanges();
return RedirectToAction("ImageResult");
}
}
}
catch (Exception ex)
{
return View(ex.Message.ToString());
}
return View();
}
Run Code Online (Sandbox Code Playgroud)
查看代码
@using (Html.BeginForm("UploadPhoto", "Home", FormMethod.Post, new { @enctype = "multipart/form-data" }))
{
@* <div class="form-group">
<label class="col-lg-2 control-label">
Customer ID</label>
<div class="col-lg-10">@Html.TextBoxFor(model => model.CusId, new { @class = "form-control" })</div>
<label class="col-lg-2 control-label">
Customer Name</label>
<div class="col-lg-10">@Html.TextBoxFor(model => model.Name, new { @class = "form-control" })</div>
</div>*@
<input type="hidden" id="id" />
<div class="col-md-6">
<div class="form-group">
<label class="col-lg-2 control-label">
DMIT Image</label>
<div class="col-lg-10">
@ViewBag.Data1
@ViewBag.Data2
<input type="file" id="file" name="file">
<input type="submit" class="btn btn-success" value="Upload" />
</div>
</div>
</div>
}
Run Code Online (Sandbox Code Playgroud)
Ufu*_*arı 13
ViewBag无法将数据传回控制器.您应该将这些值发布回表单中.最简单的方法是不使用ViewBag并将数据添加到模型类型.
然后,您可以使用HTML帮助程序传递隐藏输入,如下所示:
@Html.HiddenFor(item => item.CustomerId)
@Html.HiddenFor(item => item.ImageId)
Run Code Online (Sandbox Code Playgroud)
如果不可能,您可以手动添加隐藏的输入.请记住,名称属性对于模型绑定很重要.
<input type="hidden" name="CustomerId" value="@ViewBag.Data1" />
Run Code Online (Sandbox Code Playgroud)
是的,您无法将Viewbag从视图传递到控制器.但是你可以使用TempData传递它们.
将其添加到您的视图中.
@{TempData["Data1"]=ViewBag.Data1}
@{TempData["Data2"]=ViewBag.Data2}
Run Code Online (Sandbox Code Playgroud)
但是这个TempData将信息作为对象传递.因此,控制器中需要进行类型转换.
int x=Convert.ToInt32(TempData["Data1"]);
string y=(TempData["Data2"]).ToString();
Run Code Online (Sandbox Code Playgroud)
我试过,它正在工作.
或者您可以在get方法中从Controller发送TempData,并使用相同的方法从视图传递到post方法而不是Viewbag.
| 归档时间: |
|
| 查看次数: |
48823 次 |
| 最近记录: |