【发布时间】:2023-03-21 10:11:01
【问题描述】:
我正在使用 Asp.net MVC。我的 HTML 代码是:
<form action="/MobilesController/SaveMobilesAd">
<input type="text" name="brand" />
<input type="text" name="color" />
<!-- other stuff -->
<input type="submit" />
</form>
像brand,color这样的属性有10多个,我必须在15个不同的页面上输入数据。为了避免代码冗余,我创建了一个函数 MyAd() 在这个函数中实现了我的所有逻辑,我只需在需要的地方调用这个函数。
public class AdController: Controller
{
public void MyAd()
{
string brand = Request["brand"];
string color = Request["color"];
//other stuff. take data from Request variables and save in database.
}
}
现在在另一个控制器中使用MyAd():
public class MobilesController:Controller
{
AdController ad = new AdContoller();
public ActionResult SaveMobilesAd()
{
//some stuff.
ad.MyAd();
}
}
现在的问题是当我在另一个控制器中调用MyAd() 时它会给出异常
对象引用未设置为对象的实例
在Request["brand"] 上。我怎样才能避免这个异常或有任何其他方法可以实现这一点?
【问题讨论】:
-
您是否尝试过为此使用
Model? -
你为什么使用 Request.就开个课吧。在 Action 参数中传递它的对象
-
您不需要手动绑定值
string brand = Request["brand"]。只需使用brand属性为该方法或模型定义brand参数,默认活页夹就可以完成这项工作。它在表单值、查询字符串、路由数据等中查找具有相同名称的变量 -
你在 MVC 架构中创造了一个致命的罪恶。为此,您需要使用正确的 MVC OOP。使用模型,如果你想绑定对象参数以获得一点安全性。如果您想继续这样做,或者只是出于某种原因您确实需要这种方法。查看安德烈的答案。
标签: c# asp.net asp.net-mvc asp.net-mvc-3 request