当前位置 : 主页 > 网络编程 > ASP >

asp.net-mvc – 在MVC中传递参数的设计建议

来源:互联网 收集:自由互联 发布时间:2021-06-24
如何在两个视图中传递ASP.net MVC中的参数,如向导? 或者最佳做法是什么? 我正在研究一个内部错误跟踪ASP.net应用程序被转移到MVC,我似乎无法摆脱我的头脑中的ASPX并进入圈子. 在ASPX应
如何在两个视图中传递ASP.net MVC中的参数,如向导?

或者最佳做法是什么?

我正在研究一个内部错误跟踪ASP.net应用程序被转移到MVC,我似乎无法摆脱我的头脑中的ASPX并进入圈子.

在ASPX应用程序中.

第1页 – >选择Project,在Querystring中传递projectId
第2页 – >选择IssueType,在Querystring中传递projectId和Issuetype
第3页 – >创建新问题,我们可以获得projectId和IssueType形式的查询字符串

我们如何在MVC中重新创建上述流程?

“向导”类型系统的常见做法是使用单个< form>元素,包含隐藏字段中先前屏幕的信息.

编辑:根据请求,这是一个例子(我不熟悉ASP.net,所以你必须自己将其翻译成代码:().假设你有一个销售汽车的网站,并在你的订购表格中您询问模型车,并在随后的屏幕中提供适用于该车辆的选项.

<form action="order-wizard.html" method="POST">
    <!-- which step of the wizard are we on? -->
    <input type="hidden" name="step" value="1" />
    <!-- Get some info from the user for the first step of the wizard -->
    <select name="Model">
        <option value="Sedan">Sedan</option>
        <option value="Coup">Coup</option>
        <option value="Pickup">Pickup</option>
        <option value="Van">Van</option>
    </select>
    <input type="submit" />
</form>

当用户选择模型并提交表单时,order-wizard.html的控制器可以注意到step选项为1,并且知道检查用户是否选择了模型.然后它生成一个这样的页面:(假设用户选择“拾取”)

<form action="order-wizard.html" method="POST">
    <!-- which step of the wizard are we on? -->
    <input type="hidden" name="step" value="2" />
    <!-- Stored results from the previous stage of the wizard -->
    <input type="hidden" name="Model" value="Pickup" />
    <!-- Additional information for the wizard.  More than one option can be
         requested for each stage of the wizard. -->
    <select name="Style">
        <option value="Short Bed">Short Bed</option>
        <option value="Long Bed">Long Bed</option>
        <option value="Extended Cabin">Extended Cabin</option>
        <option value="Dually">Dually</option>
    </select>
    <select name="Interior">
        <option value="Cloth">Cloth</option>
        <option value="Leather"> Leather </option>
    </select>
    <input type="submit" />
</form>

如果向导需要收集更多信息,则可能会以隐藏输入的方式生成其他页面.否则,如果这是最后一页并收集了所有信息,则该页面的代码可以正常处理表单,就像用户在单个页面请求上提供了所有输入一样.

此技术的优点是服务器不需要缓存任何会话信息.另一个优点是它提供了一种RESTful接口,其中来自另一个工具的单个页面请求可以生成表单的所有输入,跳过中间向导页面.

缺点是,由于页面是基于用户请求动态生成的,因此如果客户端碰巧离开页面,则必须重新开始.书签不起作用.它也不会在验证中保存任何内容,因为这种表单输入可能很容易伪造.

网友评论