행운을 빌어 2 일 동안 내 문제에 대한 해결책을 찾기 위해 인터넷 검색을 해왔습니다. MVC3 .NET의 어떤 별들도 도움이 될 수 있습니까?데이터베이스에 저장된 이미지를 업데이트 할 수 없습니다.
데이터베이스에 저장된 이미지를 업데이트하기 위해 .NET MVC3 응용 프로그램을 빌드하려고합니다. 여기
뷰@model JackLing.Models.myImage
@{
ViewBag.Title = "Edit";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Edit</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm("Edit", "Image",FormMethod.Post, new { enctype = "multipart/form-data" })){
@Html.ValidationSummary(true)
<fieldset>
<legend>myImage</legend>
@Html.EditorForModel();
<div class="editor-label">Image</div>
<div class="editor-field">
@if (Model.Data != null)
{
<img src="@Url.Action("show", new { id = Model.imageID })" height="150" width="150" />
}
else {
@:None
}
</div>
<p>
<span>Choose a new file</span> <input type="file" name="imgFile"/>
</p>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
액션 메소드 여기
[HttpPost]
public ActionResult Edit(myImage img, HttpPostedFileBase imageFile)
{
//var img = (from imga in db.myImages
// where imga.imageID == id
// select imga).First();
if (ModelState.IsValid)
{
if (img != null)
{
img.imageType = imageFile.ContentType;
img.Data = new byte[imageFile.ContentLength];
imageFile.InputStream.Read(img.Data, 0, imageFile.ContentLength);
}
// save the product
UpdateModel(img);
db.SubmitChanges();
return RedirectToAction("Index");
}
else
{
// there is something wrong with the data values
return View(img);
}
}
이다 나는 그것이라는 오류가 발생합니다 응용 프로그램 실행하면 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다를."
문제를 해결하는 방법에 대한 제안이 있습니다. 그건 그렇고, 생성 및 세부 방법은 모두 작동합니다. 데이터 바인딩과 관련이 있다고 생각하지만 확실하지 않습니다 ... 해결 방법이 없습니다.
마지막 Eulerfx 의 조언에 따라 문제를 해결 여기에 작업 활동입니다.
[HttpPost]
public ActionResult Edit(myImage img, HttpPostedFileBase imageFile)
{
myImage imgToSave = (from imga in db.myImages
where imga.imageID == img.imageID
select imga).First();
if (ModelState.IsValid)
{
if (img != null)
{
imgToSave.imageType = imageFile.ContentType;
var binaryReader = new BinaryReader(imageFile.InputStream);
imgToSave.Data = binaryReader.ReadBytes(imageFile.ContentLength);
binaryReader.Close();
}
TryUpdateModel(imgToSave);
db.SubmitChanges();
return RedirectToAction("Index");
}
else
{
// there is something wrong with the data values
return View(img);
}
}
GET 동작을 표시 할 수 있습니까? –
그리고 어떤 코드 라인이 "Object reference"오류를 던지고 있습니까? – MikeTWebb
답장을 보내 주셔서 감사합니다. 여기에 GET 액션 공공 ActionResult 편집은 (INT 아이디) { myimage을 마일 = (db.myImages 에서 IMG의 경우 img.imageID == ID 선택 IMG) 좁은 방(); 돌아 가기보기 (mi); } –