gpt4 book ai didi

asp.net-mvc-4 - 从 MVC4 中的 View 调用另一个项目的 Controller

转载 作者:行者123 更新时间:2023-12-02 02:01:27 24 4
gpt4 key购买 nike

我有两个项目,d2admin 和 PartyWeb。

d2admin 是实际的 UI,它将包含所有必要的 css、js 和 View 等,如果需要,还有 Controller 。

PartyWeb 为 Party 中的每个表都设置了 Controller 。

假设我有一个名为 - Organization 的表。该表的 Controller 将位于 PartyWe/Controllers 文件夹中。

我将在 d2admin 中查看。

现在我的问题是如何从 d2admin 中存在的 Organization.cshtml View 调用 PartyWeb 中存在的 OrganizationController?

我尝试使用 Html.RenderAction,这适用于存在于同一个 Controller 中的 Controller ,当我调用 diff 项目的 Controller 时,我得到了 - 缺少方法异常。

最佳答案

我发现您的问题很有趣,因此决定亲自测试一下。我创建了两个 MVC 项目(但其中一个也可以是类库,虽然我很懒)。第一个 MVC 项目成为具有路由和 View 的主要项目,第二个项目获得模型和 Controller 。它从一开始就非常有效,这就是我的做法。

我在第二个项目中创建了模型,在我的示例中名为 Car(名称 UsersContext 保留在默认文件中,因为我想尽可能少地更改)。

namespace PartyBiz.Models
{
public class UsersContext : DbContext
{
public UsersContext()
: base("DefaultConnection")
{
}

public DbSet<Car> Cars { get; set; }
}

[Table("Cars")]
public class Car
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int CarId { get; set; }
public string CarName { get; set; }
}
}

然后我构建了项目并创建了一个带有 EF 连接到 Car 的 Controller (通过右键单击 Controller 文件夹并选择MVC controller with read/write actions and views, using Entity Framework) p>

完成后 Controller 看起来像这样(为了使示例简短,删除了许多行)

namespace PartyBiz.Controllers
{
public class CarController : Controller
{
// UsersContext is a left over from the default MVC project
private UsersContext db = new UsersContext();

public ActionResult Index()
{
return View(db.Cars.ToList());
}

// Many other actions follows here...
}
}

我通过拖放将在第二个项目 (PartyBiz) 中创建的 View 复制到第一个项目 (d2admin)。然后我从第二个项目中删除了 View 以确保它们没有在那里使用。

我还必须将第一个项目(带有 View )的引用添加到第二个项目(模型和 Controller )。之后运行第一个项目就可以正常运行了。

我继续在模型- Controller -项目中启用迁移,并毫无问题地建立了数据库连接。我可以看到 Controller 设法保存数据,即使它位于不同的项目中。

我希望这可以帮助你...

编辑:在第一个项目 (d2admin) 的 View 中使用以下代码工作正常,即使所引用的 Car Controller 存在于第二个项目中。这个链接在第一个项目的home(controller)/index(view)中使用。

@Html.ActionLink("Go to the cars", "Index", "Car")

编辑2:这是汽车 Controller 的索引 View 。该 View 位于 d2admin 中,并引用了 PartyBiz 项目中的 Controller 。

@model IEnumerable<PartyBiz.Models.Car>

@{
ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.CarName)
</th>
<th></th>
</tr>

@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CarName)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.CarId }) |
@Html.ActionLink("Details", "Details", new { id=item.CarId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.CarId })
</td>
</tr>
}
</table>

关于asp.net-mvc-4 - 从 MVC4 中的 View 调用另一个项目的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17058580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com