如何在两个视图中传递ASP.net MVC中的参数,如向导? 或者最佳做法是什么? 我正在研究一个内部错误跟踪ASP.net应用程序被转移到MVC,我似乎无法摆脱我的头脑中的ASPX并进入圈子. 在ASPX应
或者最佳做法是什么?
我正在研究一个内部错误跟踪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接口,其中来自另一个工具的单个页面请求可以生成表单的所有输入,跳过中间向导页面.
缺点是,由于页面是基于用户请求动态生成的,因此如果客户端碰巧离开页面,则必须重新开始.书签不起作用.它也不会在验证中保存任何内容,因为这种表单输入可能很容易伪造.