使用 POST 传递 two/multiple 变量的正确方法?
Correct way to pass in two/multiple variables with POST?
怎么了。
我有一个使用新 asp-...
语法的表单:
<form asp-controller="Test" asp-action="Edit" method="post" class="form-horizontal" role="form">
<div class="form-horizontal">
<div asp-validation-summary="ValidationSummary.All" class="text-danger"></div>
...
</div>
</form>
其中 post 支持自定义 class:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Edit(CustomClass object)
{
...
}
不过,我想让它post返回两个不同的对象。有没有 new/correct 方法可以使用 Core 和 asp-...
语法来做到这一点?
如果没有,最好的方法是什么?
如果我没理解错的话,这应该对你有用。
您的 ViewModel 包含 类:
public class TestViewModel
{
public Object1 Test1 { get; set; }
public Object2 Test2 { get; set; }
public TestViewModel()
{
}
public TestViewModel(Object1 one, Object2 two)
{
Test1 = one;
Test2 = two;
}
}
public class Object1
{
public string TestString1 { get; set; }
}
public class Object2
{
public string TestString2 { get; set; }
}
观点:
@model TestViewModel
<form asp-controller="Admin" asp-action="Test" method="post" role="form">
<label asp-for="@Model.Test1.TestString1"></label>
<input asp-for="@Model.Test1.TestString1" />
<label asp-for="@Model.Test2.TestString2"></label>
<input asp-for="@Model.Test2.TestString2" />
<button type="submit">submit</button>
</form>
最后是控制器动作:
public IActionResult Test()
{
Object1 obj1 = new Object1() { TestString1 = "test1" };
Object2 obj2 = new Object2() { TestString2 = "test2" };
TestViewModel vm = new TestViewModel(obj1, obj2);
return View(vm);
}
[HttpPost]
public IActionResult Test(TestViewModel vm)
{
_logger.LogDebug(vm.Test1.TestString1);
_logger.LogDebug(vm.Test2.TestString2);
return View(vm);
}
怎么了。
我有一个使用新 asp-...
语法的表单:
<form asp-controller="Test" asp-action="Edit" method="post" class="form-horizontal" role="form">
<div class="form-horizontal">
<div asp-validation-summary="ValidationSummary.All" class="text-danger"></div>
...
</div>
</form>
其中 post 支持自定义 class:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Edit(CustomClass object)
{
...
}
不过,我想让它post返回两个不同的对象。有没有 new/correct 方法可以使用 Core 和 asp-...
语法来做到这一点?
如果没有,最好的方法是什么?
如果我没理解错的话,这应该对你有用。
您的 ViewModel 包含 类:
public class TestViewModel
{
public Object1 Test1 { get; set; }
public Object2 Test2 { get; set; }
public TestViewModel()
{
}
public TestViewModel(Object1 one, Object2 two)
{
Test1 = one;
Test2 = two;
}
}
public class Object1
{
public string TestString1 { get; set; }
}
public class Object2
{
public string TestString2 { get; set; }
}
观点:
@model TestViewModel
<form asp-controller="Admin" asp-action="Test" method="post" role="form">
<label asp-for="@Model.Test1.TestString1"></label>
<input asp-for="@Model.Test1.TestString1" />
<label asp-for="@Model.Test2.TestString2"></label>
<input asp-for="@Model.Test2.TestString2" />
<button type="submit">submit</button>
</form>
最后是控制器动作:
public IActionResult Test()
{
Object1 obj1 = new Object1() { TestString1 = "test1" };
Object2 obj2 = new Object2() { TestString2 = "test2" };
TestViewModel vm = new TestViewModel(obj1, obj2);
return View(vm);
}
[HttpPost]
public IActionResult Test(TestViewModel vm)
{
_logger.LogDebug(vm.Test1.TestString1);
_logger.LogDebug(vm.Test2.TestString2);
return View(vm);
}