c# - 不同的隐藏字段在 Asp.net C# Razor 中获得相同的值
问题描述
我有一个看起来像这样的动作:
public ActionResult NewPicture(int id)
{
var response = service.Get(id);
if (!response.Succeed)
return Error(response.MainError.ErrorType);
return ManagementView("/Gallery/EditPicture.cshtml", new PictureSaveViewModel() { Id = 0, GalleryId = id });
}
在 中PictureSaveViewModel
是GalleryId
指父画廊,Id
是图片的 ID。因为是NewPicture
动作,Id
所以设置为0,GalleryId
设置为id
参数。在视图中,我有一个包含多个输入的表单PictureSaveViewModel
。
@Html.HiddenFor(model => model.Id)
@Html.HiddenFor(model => model.GalleryId)
这是指定模型的两个隐藏输入。我希望隐藏字段的值为 0,而Id
的值为参数的值。但是当我这样调用动作时,两个隐藏字段的值都是GalleryId
Id
GalleryId
id
/Gallery/NewPicture/82
82
<input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." id="Id" name="Id" type="hidden" value="82">
<input data-val="true" data-val-number="The field GalleryId must be a number." data-val-required="The GalleryId field is required." id="GalleryId" name="GalleryId" type="hidden" value="82">
我不知道这正在发生。我尝试过@Html.Hidden("Id" ,@Model.Id)
,但结果仍然相同。其他输入字段如title, description, ....
工作正常。
解决方案
在您的请求中,您将获得 Id 参数。因此,当您使用该文件名传递模型时,它将自动使用请求 ID 数据。所以请尝试以下代码,将 id 参数更改为 tid
public ActionResult NewPicture(int tid)
{
var response = service.Get(tid);
if (!response.Succeed)
return Error(response.MainError.ErrorType);
return ManagementView("/Gallery/EditPicture.cshtml", new PictureSaveViewModel() { Id = 0, GalleryId = tid });
}
推荐阅读
- ios - Lottie animationView 完成块没有被执行
- php - mysql在文件中加载数据,使用php导入带有十进制数据的零
- mysql - 语法'CREATE TABLE user_bans ...'附近的MySQL错误
- react-native - 为什么 JS 线程在使用 React Native Reanimated 时会丢帧?
- javascript - 如何在 Angular 7 中设置动态属性
- excel - 如何在 Google Colab 中从 excel 中读取特定工作表
- html - 从 scss 中的另一个文件继承类属性
- python - 使用组隐藏字段
- python-3.x - 仅在熊猫数据框中的列表中为某些值着色
- julia - Julia:对复杂数据结构(例如 DataFrames)进行并行操作