ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#-MVC模型绑定-在部分编辑期间保持值

2019-11-22 18:06:30  阅读:239  来源: 互联网

标签:razor http-post asp-net c asp-net-mvc


我有一个模型课,就像

public class Mod
{
    public string StaticProp1 {get; set;}
    public string StaticProp2 {get; set;}

    public string EditableProp1 {get; set;}
}

我想要一个可以在其中编辑EditableProp1的视图,但要在其中显示StaticProp1,StaticProp2但不能编辑的视图.

我创建了一个强类型的视图:

@model Mod

@using (Html.BeginForm()) 
{
    <p>@Model.StaticProp1</p>
    <p>@Model.StaticProp2</p>

    @Html.TextBoxFor(m => m.EditableProp1)

    <input type="submit" value="Save" />
}

在我的控制器中,当我处理该动作时,发现EditableProp1很好.

[HttpPost]
public ActionResult Edit(Mod model, FormCollection collection)
{
    string editableProp = model.EditableProp1; //This works fine

    string staticProp1 = model.StaticProp1; //Missing  

    return View(model);
}

如果由于某种原因我发回邮件,则会导致问题,因为staticProp1现在将为null,并且视图将无法显示它.

我知道我可以添加

@Html.HiddenFor(m => m.StaticProp1)
@Html.HiddenFor(m => m.StaticProp2)

我认为它可以正常工作,但是我想知道是否还有另一种更好的方法.

我的值已经采用(< p> @ Model.StaticProp1< / p>)的形式.有没有办法将模型绑定到这样的不可编辑标签?是否有HTML助手可以执行类似的操作?

顺便说一句,如果不是很明显,我只是从MVC开始,所以如果我完全不了解这一点,请告诉我!

解决方法:

您要保留的模型的每个属性都必须采用表格的形式(在编辑器或隐藏字段中).您可以按照建议使用Html.HiddenFor().如果要避免使用隐藏字段使视图超载,则可以仅在隐藏字段中存储实体的ID,然后根据Post操作中的ID提取其余数据.或将Html.TextBoxFor()与readonly属性一起使用,有关其的更多信息,请参见this question(我也喜欢第二个答案中的方法).

标签:razor,http-post,asp-net,c,asp-net-mvc
来源: https://codeday.me/bug/20191122/2061754.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有