C# 单独的url ID和HttpPost

C# 单独的url ID和HttpPost,c#,asp.net,model-view-controller,C#,Asp.net,Model View Controller,是否可以将URL(Home/Index/10)中的ID与使用HttpPost的表单提交分离并将其传递给控制器 进一步解释 代码示例可以是: [HttpPost] public ActionResult Index(int id, CustomerInfo info) { /* * Code */ Return View(); } CustomerInfo是一个对象,在本例中,它将包含一个名为“ID”的int和其他与客户相关的信息 如果我提交表单并希望传递C

是否可以将URL(Home/Index/10)中的ID与使用HttpPost的表单提交分离并将其传递给控制器

进一步解释

代码示例可以是:

[HttpPost]
public ActionResult Index(int id, CustomerInfo info)
{
    /*
     * Code
     */

    Return View();
}
CustomerInfo是一个对象,在本例中,它将包含一个名为“ID”的int和其他与客户相关的信息

如果我提交表单并希望传递CustomerInfo ID和url参数ID,则url ID和CustomerInfo.ID都将是我从表单传递的CustomerInfo ID。如果我不传递CustomerInfo ID,它们都将是url参数ID

简单地查看控制器中的url id不是一个选项,因为我需要检查CustomerInfo中是否提供了id

我知道我可以给CustomerInfoID另一个名称(例如CustomerInfoID),但我想知道我是否可以保持url参数ID和CustomerInfoID的名称相同


在上图中,您将看到我的问题。我没有为CustomerInfo.ID提供ID。当我提交表单时,它只是从url参数id将其传递到那里。如果我不提供CustomerInfo的ID,我希望它为空。

如果你想发送这两个东西,你需要通过构建一个

将此信息发送到您的视图,而不是客户信息

[HttpGet]
public ActionResult Index()
{
   ViewModel vm = new ViewModel()
   {
      info = info,
      id = 0
   }

   return View(vm);
   //changed from below:
   //return View(info);
}
视图中引用
CustomerInfo
的任何内容现在都通过视图模型执行此操作,例如:

@Html.TextBoxFor(t => t.InfoText)
现在是

@Html.TextBoxFor(t => t.info.InfoText)
...
在您的post参数中接受它:

[HttpPost]
public ActionResult Index(ViewModel viewModel)
{

    /*
     * Code
     */
    int id = viewModel.id;
    CustomerInfo info = viewModel.info;
    Return View();
}

我不太明白你的意思。当然,如果需要,您可以为
id
info.id
字段设置不同的值。当你提交表格时,这完全取决于你,尽管我不确定它是否合乎逻辑。还是我没抓住重点?解释有点混乱。也许一个具体的例子,再加上展示你用来提交这些信息的表格,会很有用。我一直不善于解释自己。我已经用我的特定问题的图片更新了帖子。但是客户Id在对象中,为什么你要它两次?我没有发现CustomerId在这个问题中有任何重要性,因为它只是一个“Id引用”,可以告诉客户当前CustomerInfo属于哪个客户。每个客户都可以有多个信息部分。因此,基本上ID和CustomerId不是一回事,不应该考虑CustomerId。听起来您应该填充
CustomerId
,可能使用
Html.HiddenFor
,或者您需要一个同时包含两个ID的视图模型
[HttpPost]
public ActionResult Index(ViewModel viewModel)
{

    /*
     * Code
     */
    int id = viewModel.id;
    CustomerInfo info = viewModel.info;
    Return View();
}