2012-03-13 50 views
0

我有一个名为BearController的控制器。其中我有一个索引操作方法和另一个操作方法。操作方法被调用,但它返回错误查看

public ActionResult EditBear(int bearId) 
{ 
    ... 
    return View(); 
} 

这是我如何把它从索引方法的观点:

$.ajax({ url: "Bear/EditBear", data: { bearId: 2} }) 

的方法被调用,断点经过EditBear结束,之后在浏览器中我得到从索引方法来看。浏览器中的url是index方法的url(这意味着只有localhost和controllerName)。

我也试图与:

$.get('@Url.Action("EditBear", "Bear")', { bearId: 2}); 

和方法甚至不被调用。问题是什么?

+0

为什么你在ajax中返回一个完整的视图? – Har 2012-03-13 14:11:10

+0

@HarHaHu我在EditBear中返回一个视图,我只是调用ajax中的EditBear方法。 – 2012-03-13 14:13:01

回答

0

看起来,如果您使用Ajax调用操作方法,则视图不会显示。我不得不使用window.location.href来获取正确的视图。

0

我想你想得到一个id为2的熊对象(或者你正在传递的任何东西),但它看起来像在你的动作方法中,你只返回View而没有任何对象作为参数传递给它。所以我想这将空白视图返回给客户端。

您可能可能要到填充物送回去。

public ActionResult EditBear(int bearId) 
{ 
    BearViewModel objVM=new BearViewModel(bearId); // Load the ViewModel 
    return View(objVM); 
} 

,并在您查看

@model BearViewModel 
<b>Edit Bear</b> 
@using (Html.BeginForm()) 
{ 
    @Html.TextBoxFor(m => m.BearName) 
  @Html.HiddenFor(m=>m.BearId) 
    <p> 
        <input type="submit" value="Save" /> 
     </p> 
} 

既然是ajax调用,你应该考虑返回一个局部视图。

public ActionResult EditBear(int bearId) 
{ 
    BearViewModel objVM=new BearViewModel(bearId); // Load the ViewModel 
    if (Request.IsAjaxRequest()) 
    { 
     return View("Partial/EditBear", objVM); 
    } 
    return View(objVM); 
} 

假设你有一个在你的熊查看文件夹

+0

它不起作用。 – 2012-03-13 14:22:18

+0

你有没有把断点,看看控制去哪里?你有什么错误吗? – Shyju 2012-03-13 14:23:05

+0

我没有收到错误。一切正常,但我的浏览器最终显示的页面是我的索引方法的视图。 – 2012-03-13 14:25:17

0

那么所谓的“局部模板”子文件夹你的部分观点,首先我不会调用该方法“EditBear”。由于它在BearController中,我只能称其为Edit。这使得URL/Bear/Edit/1而不是/ Bear/EditBear/1。

其次,您通过AJAX调用Edit方法,因此视图将作为对AJAX调用的响应返回。您可以使用Fiddler或Firebug进行验证。

我想你只想使用@ Url.Action进行一个简单的调用,而不使用任何Javascript。只需使用Razor将链接嵌入HTML(表格?)。

<td> 
@Url.Action("Edit", "Bear", new { id = 2 }); 
</td> 
+0

如何调用该方法,因为不是来自JS? – 2012-03-13 14:23:03

+0

更新了我的答案以包含一些基本的Razor代码。 – mgnoonan 2012-03-13 14:30:45

+0

结果是一样的。没有显示正确的视图。 – 2012-03-13 14:34:19

相关问题