في ASP.NET MVC مع Engine Spark View On Error Submisison ، لماذا أحصل على مورد 404 غير موجود؟

StackOverflow https://stackoverflow.com/questions/1768046

سؤال

وجهة نظري:

/المستخدم/editusername/2/ME

<viewdata model="EditUserNameViewData" />
<form action="~/User/EditUserName" method="post" class="span-15 last">
!{Html.TextBox("newUserName")}
<Submit id='"chooseNewName"' value='"Choose new name"' />
</form>

إجراءات وحدة التحكم:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult EditUserName(int id)
{
 EditUserNameViewData vd = new EditUserNameViewData();
 vd.ExistingName = _userRepository.Get(id).UserName;
 return View("EditUserName", vd);
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditUserName(string newUserName)
{
 try
 {
  // fails
 }
 catch(RulesException errors)
 {
  errors.AddModelStateErrors(ModelState, string.Empty);
  return View();
 }
}

لا يبدو أن عرض الإرجاع () يعمل لأنه يعيد التوجيه إلى

/المستخدم/editusername

ويعطيني خطأ 404. ماهذا الهراء؟ أنا أستخدم XVAL للتحقق من الصحة وكل شيء على هذا النهاية يعمل فقط لا يمكن الحصول عليه لإعادة تشغيل الصفحة السابقة بالمعلومات التي وضعها المستخدم في المربع. أي شخص يعرف ما أفعله خطأ؟ هذا يقودني الى الجنون!

تعديل

لست متأكدًا مما إذا كان هذا خطأ في Spark أو ما يجري. بمجرد إضافة صفحة editusername.aspx ، لم أعد أحصل على خطأ 404 ، وهو يعمل بشكل صحيح ، من خلال إعادة صياغة الصفحة لا مشكلة ؟؟؟ كيف لا يركض الآخرون إلى هذه القضية؟ لقد قرأت كل ما يمكن أن أجده ولا أرى أي شيء خاطئ بما أفعله. لماذا ستعمل مع محرك العرض العادي؟ لا أريد أن أعود إلى استخدام الآخر فقط لإدخال المستخدم ، لكنني أشعر أنه ليس لدي خيار آخر هنا.

رأي:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

<form action="/User/EditUserName/<%= ((EditUserNameViewData)ViewData.Model).User.Id %>/<%= ((EditUserNameViewData)ViewData.Model).User.UserName %>" method="post" class="span-15 last">
<input type="text" id="newUserName" name="newUserName" />
<input type="submit" id="chooseNewName" value="Choose new Name" />
</form>
هل كانت مفيدة؟

المحلول

كنت أتصل html.renderaction داخل صفحتي الرئيسية. كنت "نشر" من النموذج الخاص بي ، لكن طريقة الإجراء الخاصة بي كانت لها سمة [accountVerbs (httpverbs.get)] - كان هذا يجبر خطأ 404 ولم يتم العثور عليه وكان من الواضح أن خطأي. سعيد للغاية أنني اكتشفت ذلك ، لكن الجيز يا له من ألم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top