Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么我的ASP.NET MVC应用程序中的编辑代码不工作?

为什么我的ASP.NET MVC应用程序中的编辑代码不工作?
EN

Stack Overflow用户
提问于 2009-09-05 21:58:29
回答 5查看 549关注 0票数 0

由于某些原因,下面的编辑操作可以很好地进入编辑视图表单,但是当我在视图页面上单击提交以发布下面的第二个方法时,companyToEdit结构不包含companyID,并且我得到了一个异常。这很奇怪,因为我以前也这样做过,并且我在其他实例中获得了id字段。

如果我在视图中放入下面的代码部分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            <p>
                <label for="CompanyID">CompanyID:</label>
                <%= Html.TextBox("CompanyID", Model.CompanyID) %>
                <%= Html.ValidationMessage("CompanyID", "*") %>
            </p>

那么它就会工作得很好。但是如果我把它去掉,因为CompanyID是一个只读字段,所以它停止工作。有什么想法吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    //
    // GET: /Company/Edit/5

    public ActionResult Edit(int id)
    {
        var companyToEdit = _repository.GetCompany(id);
        return View(companyToEdit);
    }

    //
    // POST: /Company/Edit/5

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(int id, Company companyToEdit)
    {
        if (!ModelState.IsValid)
            return View();
        try
        {
            _repository.Update(companyToEdit);
            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

编辑2:我想我可以做一些类似的事情,并将ID隐藏在一个哈希值中,如下所示。我认为这将是最终的解决方案,我们将获得最安全和更少的复杂性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<input id="fkey" name="fkey" type="hidden" value="4a3d337bf38b35e9ff4167cfa878160b">
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-09-06 08:02:47

您必须在编辑表单上有id字段,所以只需将其放在下面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%=Html.Hidden("CompanyID",Model.CompanyID) %>
票数 0
EN

Stack Overflow用户

发布于 2009-09-07 09:32:05

您可以将id存储在Edit (get)方法的会话中,然后将其放回Edit (post)方法的Company对象中

票数 0
EN

Stack Overflow用户

发布于 2009-09-07 10:08:22

对于您在评论中建议的ID猜测,显而易见的解决方案是向Model添加另一个名为Key或类似的字段,并将其设置为Guid,例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class User
{
    public int Id {get;set;}
    public Guid Key {get;set;}
}

然后,您可以将其用作视图中的隐藏字段。使其成为数据库中的索引列将使您受益(理想情况下,您将使其成为非聚集主键,并丢弃Id字段的int )。

然后你的观点是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%=Html.Hidden("Key",Model.Key) %>

应该在Controller方法发布时自动填充该方法的参数。如果没有,那么可能存在表单标签问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1384981

复制
相关文章
Java中常见的异常类型
类格式错误。当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。
JanYork_简昀
2022/04/02
2.3K0
Java---线程多(工作内存)和内存模型(主内存)分析
转载自 https://www.cnblogs.com/chihirotan/p/6486436.html
allsmallpig
2021/02/25
2K0
JDK源码解析之 java.lang.Error
错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。
栗筝i
2022/12/01
6280
Java-线程中的异常
给出以下例子,我想问题是线程t1运行期间抛出的异常能够被捕获吗?(这是一个相当好的问题~)
Fisherman渔夫
2020/02/19
1.5K0
cdn节点访问失败,源站测试正常,节点异常?
cdn节点测试访问异常,出现空响应,直接访问源站正常,这里看起来像是节点出现异常。
任雯霄
2020/12/30
3.8K0
java主线程捕获子线程中的异常
如果想要在主线程中捕获子线程的异常,我们需要使用ExecutorService,同时做一些修改。
Java架构师必看
2021/05/14
3K0
java主线程捕获子线程中的异常
java高级用法之:JNA中的Function
在JNA中,为了和native的function进行映射,我们可以有两种mapping方式,第一种是interface mapping,第二种是direct mapping。虽然两种方式不同,但是在具体的方法映射中,我们都需要在JAVA中定义一个和native方法进行映射的方法。
程序那些事
2022/05/17
5710
Java面试系列9
java中的保留字,现在没有在java中使用。 ✎二、必须要知道的运行时异常 ArithmeticException 是出现异常的运算条件时,抛出此异常。 例如,一个整数“除以零”时,抛出此类
Java帮帮
2018/03/19
2K0
winform 多线程中ShowDialog()步骤无效的解决办法
private void Form1_Load(object sender, EventArgs e) { Thread thread = new Thread(remind); thread.IsBackground = true; thread.Start(); } private void remind() { while (true) { string h = "0"; string m = "23";
跟着阿笨一起玩NET
2018/09/19
1.3K0
Java跨语言调用,使用JNA访问Java外部接口
先说JNI(Java Native Interface)吧,有过不同语言间通信经历的一般都知道,它允许Java代码和其他语言(尤其C/C++)写的代码进行交互,只要遵守调用约定即可。首先看下JNI调用C/C++的过程,注意写程序时自下而上,调用时自上而下。
朝雨忆轻尘
2019/06/18
4.6K0
java高级用法之:JNA中的Structure
前面我们讲到了JNA中JAVA代码和native代码的映射,虽然可以通过TypeMapper来将JAVA中的类型和native中的类型进行映射,但是native中的数据类型都是基础类型,如果native中的数据类型是复杂的struct类型该如何进行映射呢?
程序那些事
2022/05/09
1.9K0
java高级用法之:JNA中的Structure
前面我们讲到了JNA中JAVA代码和native代码的映射,虽然可以通过TypeMapper来将JAVA中的类型和native中的类型进行映射,但是native中的数据类型都是基础类型,如果native中的数据类型是复杂的struct类型该如何进行映射呢?
程序那些事
2022/05/17
6640
java高级用法之:JNA中的Function
在JNA中,为了和native的function进行映射,我们可以有两种mapping方式,第一种是interface mapping,第二种是direct mapping。虽然两种方式不同,但是在具体的方法映射中,我们都需要在JAVA中定义一个和native方法进行映射的方法。
程序那些事
2022/05/06
1K0
java高级用法之:JNA中的回调
什么是callback呢?简单点说callback就是回调通知,当我们需要在某个方法完成之后,或者某个事件触发之后,来通知进行某些特定的任务就需要用到callback了。
程序那些事
2022/05/10
1.5K0
java中的异常总结
一般面试中java Exception(runtimeException )是必会被问到的问题
哲洛不闹
2018/09/19
1.4K0
Java多线程中的内存可见性
分为主内存和线程内存,当线程与其他线程共享一个变量时,便会把主内存的变量复制到线程内存中去。当发生对变量的修改时,会同步到主内存,主内存再同步到其他线程内存中去。
zhangheng
2020/04/28
5020
异常、线程
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100192.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/29
7660
异常、线程
RuntimeException和Exception区别
Java设置了异常,旨在鼓励将方法中可能出现的异常告知给使用此方法的程序员(你和我!)。当然了,这种方法是比较优雅的,让我们确切的知道是在哪里出了错,并提供了异常捕获。本篇文章主要对Java中的异常进行介绍与区分。
全栈程序员站长
2022/09/15
1.1K0
RuntimeException和Exception区别
WPF中UI元素跨线程访问
dotnet中线程资源独占UI元素,不能跨线程访问,可以通过Dispatcher.Invoke的方式调用,但实际处理还是UI线程中,任务量比较大的数据会增加线程的处理压力。 其实还有一种做法,可以通过设置UI元素为只读的方式,跨线程访问。 如BitmapSource跨线程访问,可以调用Freeze设置元素为只读模式。 Aforge.net跨线程传递图像资源,如下:
sofu456
2019/07/09
1.1K0
java高级用法之:JNA中的回调
什么是callback呢?简单点说callback就是回调通知,当我们需要在某个方法完成之后,或者某个事件触发之后,来通知进行某些特定的任务就需要用到callback了。
程序那些事
2022/05/17
8950

相似问题

JNA无效内存访问

13

JNA:无效内存访问

11

JNA:无效内存访问

18

JNA中的无效内存访问

16

映射JNA中的COM接口方法无效内存访问异常

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文