लौटने पर मुझे Ajax.ActionLink
पर क्लिक करते समय 500 आंतरिक सर्वर त्रुटि मिल रही है। मेरे पास एक प्रोफाइल पेज है जो कई आंशिक रूप से बना है। प्रत्येक आंशिक अजाक्स सर्वर को उस विशिष्ट आंशिक से संबंधित उपयोगकर्ता जानकारी के संपादन की अनुमति देने के लिए कहते हैं।एमवीसी 4 - अजाक्स.एक्शनलिंक() 500 आंतरिक सर्वर त्रुटि
मैंने कहा कि कार्यक्षमता के साथ 3 आंशिक लागू किए गए हैं जो ठीक काम करते हैं। जिस पर मैं काम कर रहा हूं, शुरुआत में अपलोड की गई छवियों की एक सूची दिखाना चाहिए - यदि उपयोगकर्ता ने कोई छवि अपलोड नहीं की है तो Ajax.ActionLink
पहले उल्लिखित दिखाया जाएगा, जो क्लिक होने पर उपयोगकर्ता को आंशिक रूप से लाया जाएगा जो छवि अपलोड करने में सुविधा प्रदान करता है।
यहाँ प्राप्त है और पोस्ट ActionResults
:
यहाँ मैं क्रोम में दिखाई दे रही है जब मैं लिंक मारा है
//
// GET: /Tenants/TenantUploadReference
[HttpGet]
public ActionResult TenantUploadReference()
{
try
{
var currentTenant = tenantRepository.GetLoggedInTenant();
if (currentTenant.ReferencePhotos == null)
{
currentTenant.ReferencePhotos = currentTenant.ReferencePhotos ?? new List<ReferencePhoto>();
}
return PartialView("_TenantUploadReferencePartial", currentTenant.ReferencePhotos.ToList());
}
catch (Exception e)
{
ModelState.AddModelError("", e);
return View();
}
}
//
// POST: /Tenants/TenantUploadReference
[HttpPost]
public ActionResult TenantUploadReference(HttpPostedFileBase file, Tenant tenant)
{
try
{
if (file != null)
{
if (file.ContentLength > 10240)
{
ModelState.AddModelError("file", "The size of the file should not exceed 10 KB");
return View();
}
var supportedTypes = new[] { "jpg", "jpeg", "png", "JPG", "JPEG", "PNG" };
var fileExt = System.IO.Path.GetExtension(file.FileName).Substring(1);
if (!supportedTypes.Contains(fileExt))
{
ModelState.AddModelError("photo", "Invalid type. Only the following types (jpg, jpeg, png) are supported.");
return View();
}
using (var db = new LetLordContext())
{
var reference = db.Image.Create<ReferencePhoto>();
// Convert HttpPostedFileBase to byte array
MemoryStream target = new MemoryStream();
file.InputStream.CopyTo(target);
byte[] photo = target.ToArray();
reference.File = photo;
reference.Format = fileExt;
reference.DateUploaded = DateTime.Now.Date;
reference.Description = "";
reference.Name = "";
db.Image.Add(reference);
db.SaveChanges();
return PartialView("_TenantReferencePhotosPartial", file);
}
}
else
{
return View();
}
}
catch (Exception e)
{
ModelState.AddModelError("", e);
return View();
}
}
जब मैं एक ब्रेक के साथ डिबगर के माध्यम से कदम GET ActionResult
पर इंगित करें यह return PartialView
पर हिट करता है और कोई अपवाद नहीं फेंक दिया जाता है।
_TenantUploadReferencePartial
में मैं
@using (Ajax.BeginForm("TenantUploadReference", "Tenants", FormMethod.Post, new AjaxOptions { InsertionMode = InsertionMode.Replace, HttpMethod = "POST", UpdateTargetId = "tenant-reference-photos" }))
और _TenantReferencePhotosPartial
में (जहां ActionLink
फेंकता 500 त्रुटि) मैं इस
@if (Model.ReferencePhotos == null)
{
<h3>You haven't uploaded any references!
@Ajax.ActionLink("Upload now?",
"TenantUploadReference",
new AjaxOptions
{
UpdateTargetId = "tenant-reference-photos",
InsertionMode = InsertionMode.Replace,
HttpMethod = "GET",
LoadingElementId = "ajax-loader"
})</h3>
यह भी उपयोगी हो सकता है पता करने के लिए उपयोग करने का उपयोग करने वाले पर अन्य partials पृष्ठ अपेक्षित के रूप में काम करता है, इसलिए मुझे नहीं लगता कि यह अनुपलब्ध स्क्रिप्ट के साथ एक मुद्दा है। मुझे नुकसान हो रहा है कि यह क्यों हो रहा है - एक समाधान की सराहना की जाएगी।
मुझे यह दिलचस्प लगता है कि आपकी GET कार्रवाई मॉडल के लिए कभी भी वापस नहीं आ जाएगी। संदर्भ फ़ोटो, लेकिन आप अभी भी दृश्य पर शून्य के लिए परीक्षण करते हैं। दृश्य में और क्या होता है? और क्या आप सुनिश्चित हैं कि प्राप्त विधि मॉडल/नल के साथ दृश्य() को देखने/पकड़ने और वापस नहीं लौटाती है? –
मुझे GET में NullReferenceException मिल रहा था, और जांच के बाद मैंने पढ़ा कि नल कोलेसिंग ऑपरेटरों का उपयोग करके इस प्रकार की स्थिति में इसका समाधान हो सकता है। क्या मुझे ऑपरेटर का उपयोग करने से पहले शून्य के लिए भी परीक्षण करने की आवश्यकता है? यदि उपयोगकर्ता के पास कोई है, तो यदि संदर्भ (अगर) ऐप उपयोगकर्ता को एक्शनलिंक प्रदर्शित करता है तो अन्य संदर्भ संदर्भ प्रदर्शित करेंगे। पुन: पुष्टि करने के लिए, मैंने डीबगर के साथ जीईटी के माध्यम से कदम बढ़ाया है, मॉडल शून्य नहीं है और वापस आंशिक दृश्य हिट किया जा रहा है। – MattSull
क्षमा करें मुझे अभी एहसास हुआ है कि आपका क्या मतलब है, यह समझ में आता है - कभी नल वापस नहीं लौटने और दृश्य में इसके लिए परीक्षण करना। जीईटी में ऑपरेटर का उपयोग करने का कारण NullReferenceException से निपटना था। – MattSull