2013-12-17 15 views
-1

我有3個順序的日期字段:開始,結束,證明。當用戶表示他想要更新給定行中的日期時,我將動作鏈接到該表的控制器,即Task,其中添加了代碼以確定哪個字段爲空,然後直接導向定製到該字段的視圖。我的想法是,返回將轉到腳手架生成的數據將被保存的編輯。所以3個觀點有共同的回報。mvc4 ef5返回指向文件夾而不是控制器的點

我收到404錯誤。既然我知道名字存在,它一定是不可用的。

腳手架產生郵編:

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Edit(Task task) 
{ 
if (ModelState.IsValid) 
{ 
db.Entry(task).State = EntityState.Modified; 
db.SaveChanges(); 
} 

而且我選擇代碼:

public ActionResult EditBegin(int? id) 
{ 
Task ViewModel = db.Tasks.Find(id); 
{ 
if (ViewModel.SStart == null) 
{ 
ViewModel.TaskID = id.Value; 
ViewModel.SStart = DateTime.Now; 
return View("EditStart", ViewModel); 
} 
else if (ViewModel.SEnd == null) 
{ 
ViewModel.TaskID = id.Value; 
ViewModel.SEnd = DateTime.Now; 
return View("EditEnd", ViewModel); 
} 
else if (ViewModel.SCert == null) 
{ 
ViewModel.TaskID = id.Value; 
ViewModel.SCert = DateTime.Now; 
return View("EditCert", ViewModel); 
} 
return View("EditCert", ViewModel); //solves not all paths have return error 
} 
} 

而且在EditEnd查看EditorFor和ActionLink的。

@Html.EditorFor(model => model.SEnd) // preloaded with NOW 
@Html.ActionLink("Save End Date", "Edit", "Task") //is the TaskID passed back as part of this? 

所以在EditEnd顯示,按「保存結束日期」按鈕,我得到的404錯誤。我測試了任務編輯功能,以確認「資源可用」,它工作正常。

我發現路徑是一個文件夾... /任務/編輯不是控制器。

我該如何得到它來引用控制器。刪除引號不起作用。

感謝

我的整個觀點是:

@model MVCBSV.Models.Task 


@{ 
ViewBag.Title = "Scanedit"; 
} 

<h2>Add Start Date</h2> 

@using (Html.BeginForm()) { 
@Html.AntiForgeryToken() 
@Html.ValidationSummary(true) 
Html.BeginForm("Edit", "Task", FormMethod.Post); 
<fieldset> 
<legend>Task</legend> 

@Html.HiddenFor(model => model.TaskID) 

<div class="editor-label"> 
Step Name 
</div> 
<div class="editor-field"> 
@Html.DisplayFor(model => model.StepName); 
</div> 


<div class="editor-label"> 
@Html.LabelFor(model => model.SStart) 
</div> 
<div class="editor-field"> 
@Html.EditorFor(model => model.SStart) 
@Html.ValidationMessageFor(model => model) 
</div> 

@*   <p> 
<input type="submit" value="Save" /> 
</p>*@ 
</fieldset> 
} 

<div> 
@Html.ActionLink("Save Start Date", "Edit", "Task") 
</div> 

@section Scripts { 
@Scripts.Render("~/bundles/jqueryval") 
} 

回答

0

編輯方法裝飾作爲HTTP POST方法。定位標記將提供您的瀏覽器用來發出HTTP GET請求的鏈接。您可以從屬性更改爲HttpGet,這將工作。

但是,最好的做法是將表單實際發佈到保存方法。

+0

我想我理解但不知道如何編碼。我試圖通過在我的視圖中添加Html.BeginForm(「Edit」,「Task」,FormMethod.Post)來「實際發佈到表單」,但沒有任何幫助。@ MailmanOdd – user2887440

+0

您是否可以編輯原始問題以添加整個視圖?我會看看我能爲你做什麼。 –

+0

感謝您的幫助。這是完整的視圖。 @MailmanOdd – user2887440

相關問題