C# 将值从部分传递到控制器

C# 将值从部分传递到控制器,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个页面有一个局部视图区域,如下所示: 局部视图通过选项卡菜单根据用户所在的区域而变化。对于选定的每个选项卡,局部视图都会更改。显示的每个局部视图都有要编辑的字段。按钮保存和取消始终相同,包含在周围视图中 当用户按下Save时,我想捕捉插入的值,这是我在其他视图中通过以下方式实现的: HTML <input type="text" name="phoneNumber"> 但在这里,当调试器点击上面的C#行时,我总是得到一个null异常 如何将输入中包含的值从局部视图传递到控制

我有一个页面有一个局部视图区域,如下所示:

局部视图通过选项卡菜单根据用户所在的区域而变化。对于选定的每个选项卡,局部视图都会更改。显示的每个局部视图都有要编辑的字段。按钮
保存
取消
始终相同,包含在周围视图中

当用户按下
Save
时,我想捕捉插入的值,这是我在其他视图中通过以下方式实现的:

HTML

<input type="text" name="phoneNumber">
但在这里,当调试器点击上面的C#行时,我总是得到一个null异常

如何将
输入中包含的值从局部视图传递到控制器

编辑

这是我的代码:视图中的输入(按钮)

同样,我已经在我的登录表单中尝试过了,效果很好:

<form method="get" action="../Main/Index">
    <p>
        <input type="text" name="username" maxlength="30"></p>
    <p>
        <input type="password" name="password" maxlength="25"></p>

    <p class="submit">
        <input type="submit" name="commit" value="Login"></p>
    </form>

您可以为每个部分创建一个视图模型,然后创建一个包含所有部分的视图模型,在这种情况下,您将在提交接收父视图模型的表单时收到所有选项卡的信息。 比如:

public class ParentViewModel{

    public int Id { get; set; }
    public Option1ViewModel Option1 { get; set; }
    public Option2ViewModel Option2 { get; set; }
    public Option3ViewModel Option3 { get; set; }
    public Option4ViewModel Option4 { get; set; }


} 

您可以为每个部分创建一个视图模型,然后创建一个包含所有部分的视图模型,在这种情况下,您将在提交接收父视图模型的表单时收到所有选项卡的信息。 比如:

public class ParentViewModel{

    public int Id { get; set; }
    public Option1ViewModel Option1 { get; set; }
    public Option2ViewModel Option2 { get; set; }
    public Option3ViewModel Option3 { get; set; }
    public Option4ViewModel Option4 { get; set; }


} 

您可以为每个部分创建一个视图模型,然后创建一个包含所有部分的视图模型,在这种情况下,您将在提交接收父视图模型的表单时收到所有选项卡的信息。 比如:

public class ParentViewModel{

    public int Id { get; set; }
    public Option1ViewModel Option1 { get; set; }
    public Option2ViewModel Option2 { get; set; }
    public Option3ViewModel Option3 { get; set; }
    public Option4ViewModel Option4 { get; set; }


} 

您可以为每个部分创建一个视图模型,然后创建一个包含所有部分的视图模型,在这种情况下,您将在提交接收父视图模型的表单时收到所有选项卡的信息。 比如:

public class ParentViewModel{

    public int Id { get; set; }
    public Option1ViewModel Option1 { get; set; }
    public Option2ViewModel Option2 { get; set; }
    public Option3ViewModel Option3 { get; set; }
    public Option4ViewModel Option4 { get; set; }


} 

您实际上没有在提交中发布任何值。看看这段代码在做什么:

onclick="location.href='@Url.Action("SaveChanges", "Config")'"
单击按钮时,您只需告诉浏览器转到
SaveChanges
操作的URL即可。这是调用
GET
请求并放弃客户端输入的任何表单数据

您应该发布一个表单。通常,这需要将元素和submit按钮包装在
表单
标记中(
@Html.BeginForm
助手方法可以提供帮助),以便客户端看起来像:

<form method="POST" action="/some/url">
    <input type="text" name="phoneNumber" />
    <!-- other HTML elements -->
    <input type="submit" />
</form>

如果希望每个局部视图都是它自己的单独表单,那么将
Html.BeginForm
调用放在该局部视图中。但是,使用单个全局提交按钮可能会有点棘手。通常,在具有多个表单的设置中,每个表单都有自己的按钮。您可以使用JavaScript技巧在选项卡更改时显示/隐藏不同的提交按钮,具体取决于您用于管理选项卡的内容。

您实际上并没有在提交中发布任何值。看看这段代码在做什么:

onclick="location.href='@Url.Action("SaveChanges", "Config")'"
单击按钮时,您只需告诉浏览器转到
SaveChanges
操作的URL即可。这是调用
GET
请求并放弃客户端输入的任何表单数据

您应该发布一个表单。通常,这需要将元素和submit按钮包装在
表单
标记中(
@Html.BeginForm
助手方法可以提供帮助),以便客户端看起来像:

<form method="POST" action="/some/url">
    <input type="text" name="phoneNumber" />
    <!-- other HTML elements -->
    <input type="submit" />
</form>

如果希望每个局部视图都是它自己的单独表单,那么将
Html.BeginForm
调用放在该局部视图中。但是,使用单个全局提交按钮可能会有点棘手。通常,在具有多个表单的设置中,每个表单都有自己的按钮。您可以使用JavaScript技巧在选项卡更改时显示/隐藏不同的提交按钮,具体取决于您用于管理选项卡的内容。

您实际上并没有在提交中发布任何值。看看这段代码在做什么:

onclick="location.href='@Url.Action("SaveChanges", "Config")'"
单击按钮时,您只需告诉浏览器转到
SaveChanges
操作的URL即可。这是调用
GET
请求并放弃客户端输入的任何表单数据

您应该发布一个表单。通常,这需要将元素和submit按钮包装在
表单
标记中(
@Html.BeginForm
助手方法可以提供帮助),以便客户端看起来像:

<form method="POST" action="/some/url">
    <input type="text" name="phoneNumber" />
    <!-- other HTML elements -->
    <input type="submit" />
</form>

如果希望每个局部视图都是它自己的单独表单,那么将
Html.BeginForm
调用放在该局部视图中。但是,使用单个全局提交按钮可能会有点棘手。通常,在具有多个表单的设置中,每个表单都有自己的按钮。您可以使用JavaScript技巧在选项卡更改时显示/隐藏不同的提交按钮,具体取决于您用于管理选项卡的内容。

您实际上并没有在提交中发布任何值。看看这段代码在做什么:

onclick="location.href='@Url.Action("SaveChanges", "Config")'"
单击按钮时,您只需告诉浏览器转到
SaveChanges
操作的URL即可。这是调用
GET
请求并放弃客户端输入的任何表单数据

您应该发布一个表单。通常,这需要将元素和submit按钮包装在
表单
标记中(
@Html.BeginForm
助手方法可以提供帮助),以便客户端看起来像:

<form method="POST" action="/some/url">
    <input type="text" name="phoneNumber" />
    <!-- other HTML elements -->
    <input type="submit" />
</form>

如果希望每个局部视图都是它自己的单独表单,那么将
Html.BeginForm
调用放在该局部视图中。但是,使用单个全局提交按钮可能会有点棘手。通常,在具有多个表单的设置中,每个表单都有自己的按钮。您可以使用JavaScript技巧在选项卡更改时显示/隐藏不同的提交按钮,具体取决于您用于管理选项卡的内容。

目前还不清楚问题出在哪里。