Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC,C#将parent.id传递给子索引或创建操作?_C#_Asp.net Mvc - Fatal编程技术网

MVC,C#将parent.id传递给子索引或创建操作?

MVC,C#将parent.id传递给子索引或创建操作?,c#,asp.net-mvc,C#,Asp.net Mvc,这将表明列表应仅显示当前网关的传感器 我认为这不是正确的方式。我想我应该在后台传递网关模型,以便在任何时候发布如下链接: localhost/sensor/list/5 localhost/sensor/ public ActionResult List(int id) { Gateway gateway = Grepository.GetGateway(id); var sensors = repository.FindGatewaySensors(id); re

这将表明列表应仅显示当前网关的传感器

我认为这不是正确的方式。我想我应该在后台传递网关模型,以便在任何时候发布如下链接:

localhost/sensor/list/5
localhost/sensor/
public ActionResult List(int id)
{
    Gateway gateway = Grepository.GetGateway(id);

    var sensors = repository.FindGatewaySensors(id);
    return View(sensors);
}
它只需理解当前网关的上下文即可

Q2:接下来的问题是如何对传感器创建操作执行相同的操作。我可以设置创建控制器并抛出一个视图表单,但如何指示传感器应该与哪个网关关联

在SensorController类的顶部:

SensorRepository repository = new SensorRepository();
GatewayRepository Grepository = new GatewayRepository();
我的传感器列表ActionResult方法如下所示:

localhost/sensor/list/5
localhost/sensor/
public ActionResult List(int id)
{
    Gateway gateway = Grepository.GetGateway(id);

    var sensors = repository.FindGatewaySensors(id);
    return View(sensors);
}
我的sensor Create ActionResult方法如下所示(请注意,在将gatewayid值传递给视图之前,我正在设置该值;它在视图表单中不可编辑):

以下是创建ActionResult post方法:

[HttpPost]
public ActionResult Create(FormCollection collection)
{

    Sensor sensor = new Sensor();

    if (TryUpdateModel(sensor))
    {
        repository.Add(sensor);
        repository.Save();
        return RedirectToAction("List", new { id = sensor.gatewayid });
    }
    return View(sensor);
}

但这似乎并不正确。我敢打赌,有一个简单的方法,我错过了。请告诉我。

我不知道这是否还相关(老问题),但这里有一些关于这方面的意见(只不过是一些意见)

对于Q1,我更喜欢使用我想象中的MVC“逻辑”URL——也就是说,从用户的角度来看,URL应该让他们知道他们可能获取什么资源。因为你可以做一些半花式的布线,也许像这样的布线会更聪明:

/网关/5/传感器列表

或者是关于这个主题的一些变化。当然,有很多方法可以设置“当前”网关,例如作为会话变量或会话cookie,但是如果有人复制URL,将其邮寄给他的朋友说“检查这个坏男孩网关上的传感器!”——如果没有对网关的引用,它将无法工作(不必是ID,有些人认为公开数据库ID是件坏事)

对于Q2,我的常见解决方案基本上是以创建视图的形式包含一个隐藏字段,指示要为其创建传感器的网关的ID。它是干净的,可以工作,这对我来说已经足够了

如果半年后你仍在等待答案,我希望其中的一些帮助!:)

请在你的帖子中发表。