- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 MVC 的新手,所以请放轻松。我收到了一个在 MVC 中启动的项目,并被告知要添加到其中。在我到达需要来自两个不同模型的数据的部分之前,我一直很好。现在我被困住了,我的老板希望昨天完成这件事。如果可以,请帮忙。
我有一个包含两个局部 View 和一个提交按钮的 View 。每个局部 View 都使用不同的模型。 View 在屏幕上显示用户可以更改的信息。然后单击提交按钮。在 Controller 中,我想访问两个模型的数据(用户在屏幕上输入的值)。现在,我什至无法获得调用 Controller 的提交按钮。这是我需要立即帮助的部分,但我最终需要知道如何从 Controller 访问两个模型的数据。
这是我想做的事情的基本思路:
这是我的观点:CreateContract.cshtml
<div class="container-fluid">
@using (Html.BeginForm("CreateContract", "CreateContract", FormMethod.Post, new { @class = "form-horizontal " }))
{
<div id="PartialDiv">
@{
Html.RenderPartial("ApplicationPartialView", new CarmelFinancialWeb.Models.ModelApplication());
Html.RenderPartial("ContractPartialView");
}
</div>
<input id="btnCreateContract" type="submit" class="btn btn-primary" value="Save" name="CreateContract" />
}
</div>
这是 Controller CreateContractController.cs 的一部分。当 View 打开并正常工作时,将调用此方法。
[AuthorizeAdmin]
public ActionResult CreateContract(string ID)
{
ModelContract obj_Contract = new ModelContract();
obj_Contract.BuyerName = "MOCS";
return View(@"~/Views/CreateContract/CreateContract.cshtml", obj_Contract);
}
这是 Controller CreateContractController.cs 的一部分。单击提交按钮时不会点击此方法。我已尝试包含来自其他方法的字符串 ID 变量以及 ModelContract 和 ModelApplication(及其各种组合),但我无法调用此方法。
[AuthorizeAdmin]
[HttpPost]
public ActionResult CreateContract()
{
ModelApplication obj_App = new ModelApplication();
return View(@"~/Views/CreateContract/CreateContract.cshtml", obj_App);
}
这些是 Controller 中用于分部 View 的方法。这些也没有被调用。
public PartialViewResult ApplicationPartialView(string ID)
{
ModelApplication obj_App = new ModelApplication();
if (ID != null && ID != "0" && ID != null && ID != "")
{
obj_App = objBllApplication.GetApplicationByID(int.Parse(ID));
}
return PartialView("CreateContractApplicationPartialView");
}
public PartialViewResult ContractContractPartialView()
{
ModelContract obj_Contract = new ModelContract();
obj_Contract.DealerID = "MOCS";
return PartialView("CreateContractContractPartialView");
}
最佳答案
这里有很多内容在幕后进行,了解这些内容对您很有帮助,尤其是当您是新手时。首先,一个 View 只能有一个模型。高级原因是它实际上是通过所选模型按其类型填充的通用类呈现的。您可以像这里一样通过使用部分 View 来作弊,但您仍然必须将模型实例放入其中。看起来你正试图通过在你的 Controller 中创建 Action 来表示这些部分来做到这一点,但这些实际上是无用的。他们永远不会被召唤。 Html.Partial
或 Html.RenderPartial
将只呈现指定的 View ,默认情况下使用与调用 View 相同的模型,或者传递给这些方法的对象模型(第二个参数)。它不会返回到 Controller 。
在 MVC 中,有一种叫做“子 Action ”的东西,它可以像您希望的那样工作。通过使用 Html.Action
或 Html.RenderAction
,您可以在返回部分 View 的 Controller 上调用此操作。不过有两件事:
如果您要返回局部 View (而不是完整 View ),则应使用 [ChildActionOnly]
修饰操作。否则,操作会暴露给来自浏览器的直接 URL 访问,这将单独呈现局部 View ,没有任何布局。
子操作只能用于 GET 样式的请求。您不能 POST 到子操作。
如果表单的这些单独区域将被发布到单独的位置,那么对于此类事情实际上最好只使用子操作来呈现表单的单独区域。以您同时具有登录或注册概念的组合页面为例。您可以使用子操作来呈现每个单独的字段组,但登录部分应该发布到登录操作,注册部分应该发布到注册操作。您不会将两种形式的所有内容都发布到同一操作。
在您的特定场景中,部分 View 实际上是可行的方法,但您只需要将主视图的模型调整为包含两个子模型的 View 模型。例如:
public class MyAwesomeViewModel // name doesn't matter
{
public ModelApplication Application { get; set; }
public ModelContract Contract { get; set; }
}
然后,在您的主视图中:
@model Namespace.To.MyAwesomeViewModel
...
@Html.Partial("ApplicationPartialView", Model.Application)
@Html.Partial("ContractPartialView", Model.Contract)
最后,您的 POST 操作会将此 View 模型作为参数:
[HttpPost]
public ActionResult CreateContract(MyAwesomeViewModel model)
{
...
}
关于c# - MVC - 提交按钮不适用于多个局部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26282205/
如果我们定义一个像这样的函数 (defun foo(x) (setf x somevalue)) x 定义为局部变量还是全局变量?使用 setf/q 将值设置为全局值。如果它是全局的,谁能告诉我如
仍在学习 MVC3、EF。现在我正在连接到 MySql,但我相信这无关紧要。为简单起见,我决定为我的测试应用程序使用一个数据库,并且我包含了一个类别来区分数据。例如,我有一个新闻、事件、信息和页面类别
假设我定义了以下代码: int *func() { int *p=(int *)malloc(sizeof(int)); // memory is allocated from heap
我正在构建一个小型 PHP MVC,但我在一小部分编码方面碰壁了。我想我需要“局部 View ”,但我也许可以用现有代码实现一些东西。 目前我的 Controller 是最简单的形式: 实例化一个对象
假设我定义了以下代码: int *func() { int *p=(int *)malloc(sizeof(int)); // memory is allocated from heap
我有以下代码(用 Python 2.X 编写): def banana(x): def apple(stuff): x /= 10 return stuff -
我正在尝试重用一些代码,部分 View 似乎是使用 MVC 时执行此操作的最佳方式。 我创建了一个继承自 IEnumerable 的局部 View (见下文)。 @model IEnumerable
局部 const 变量将存储在哪里?我已经验证过,函数中使用 const 变量的每个位置都会被其值替换(如立即值寻址模式)。但如果指针被分配给它,那么它就会存储在堆栈中。在这里我不明白处理器如何知道其
我想将局部变量用作全局变量,有人告诉我这样做的方法是在函数外部创建变量,如下所示: var foo = null; function bar() {
我正在处理一个很长的 Angular 表格。我想知道我是否可以将它分成许多不同的 View 并在主视图中引用它们中的每一个。 First Section
我有一个导航栏,它是一个局部 View ,我需要在设计页面上呈现它,以便用户编辑他们的个人资料。事实上,我只有一个页面,但是添加执行帐户维护的路径搞乱了我的导航栏加载,因为实例变量不存在。无论如何,我
我没有用到全局变量,也从未明确定义过全局变量,但我的代码中似乎有一个。你能帮我把它做成本地的吗? def algo(X): # randomized algorithm while len(X
假设我有这个(当前无返回)函数: def codepoint_convert(text, offset): codepoint = text[offset] if codepoint
我在我的项目中同时使用了局部 View 和布局概念,但我无法区分。但我的感觉是两者都在做同样的工作。任何人都可以通过示例说出有关局部 View 和布局的简要概念以及区别吗? 最佳答案 除了 Josh
使用全局变量会加快速度吗?在英特尔的体系结构软件开发人员手册(关于微处理器)中建议使用局部变量而不是全局变量。但是,请考虑以下代码: void process_tcp_packets(void) {
我有一个局部 View 使用的模型与我在其中呈现它的 View 不同。我不断收到错误消息。 The model item passed into the dictionary is of type '
我在 cshtml 页面上有一个局部 View ,如下所示:- @model MvcCommons.ViewModels.CompositeViewModel @{ ViewBag.Title = "
我在从 while 循环全局更新数组时遇到问题,如下所述。请注意,我只能使用 C 95 及之前版本的功能。任何帮助将不胜感激!满浆箱http://pastebin.com/ss6VgTCD 在我的程序
我想刷新 Json 局部 View 。我正在尝试使用这个: $('#example123').load('@Url.Action("Rejestracja", "Logowanie")'); 但不能正
我有一个 asp.net 页面,它返回我当前正在使用的选项卡中的部分 View 。我已经设置了所有 jQuery 并且可以正常工作。它工作一次并通过 ajax 返回一个局部 View .html(re
我是一名优秀的程序员,十分优秀!