如何一次只限制一个用户编辑视图MVC 5 .Net

时间:2015-11-16 08:17:26

标签: asp.net-mvc

我正在使用MVC 5 .Net创建一个Web应用程序。我想限制一个用户一次只能编辑一个视图。例如,用户A访问.... / Edit / 5。 当用户B在用户A仍在编辑时尝试访问某种形式(... /编辑/ 5)时,我想显示一些消息,如"其他用户正在编辑。请稍后再试#34;在我的编辑视图中,我创建了一个自动保存功能,每30秒保存一次。因此,当用户A仍在编辑时,用户B无法访问编辑表单(用户B需要保持在同一站点上)。我正在考虑在数据库中添加新列,但我还在想如果用户A在编辑页面时只关闭浏览器会怎样。数据库中的字段仍然相同,因此没有其他人可以编辑此视图。 我希望你能理解我可以帮助我的问题。

3 个答案:

答案 0 :(得分:0)

您可以在表格中添加一个字段,如“LOCK”,当任何用户点击编辑时,您将此字段更改为1并检查编辑是否锁定== 0转到查看其他类型错误以及用户点击保存更改时锁定值为0

答案 1 :(得分:0)

您应该使用import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class CreateNxi { void createFiles(String guid, String collection, String output) throws Exception { String input = "D:\\News\\nxis\\Template - change GUID.nxi"; String replaceGuid = guid; String replaceCollection = collection; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document document = db.parse(new File(input)); NodeList nodeList = document.getElementsByTagName("n-extract-guid"); NodeList nodeList1 = document.getElementsByTagName("n-extract-request"); for (int x = 0, size = nodeList.getLength(); x < size; x++) { Node docIDValue = (Node) nodeList.item(x).getAttributes().getNamedItem("guid"); String docIDval = docIDValue.getNodeValue(); docIDValue.setNodeValue(docIDval.replaceAll(docIDval, replaceGuid)); } // Collection for (int x1 = 0, size1 = nodeList1.getLength(); x1 < size1; x1++) { Node collectionIDValue = (Node) nodeList1.item(x1).getAttributes().getNamedItem("verifycollection"); String collectionIDval = collectionIDValue.getNodeValue(); collectionIDValue.setNodeValue(collectionIDval.replaceAll(collectionIDval, replaceCollection)); } new File(output).mkdir(); output += replaceGuid + ".nxi"; Transformer xformer = TransformerFactory.newInstance().newTransformer(); xformer.transform(new DOMSource(document), new StreamResult(new File(output))); // System.out.println("Done"); } } 来控制并发:

Timestamp

更多详情here

答案 2 :(得分:0)

我通过创建新表来解决这个问题,其中我保留用户ID,正在编辑的项目的ID和锁定的时间。如果视图被锁定不到30分钟,如果有人试图访问我显示消息,但如果更多棕褐色30分钟用户可以编辑。我也创建了JavaScript函数window.onbeforeunload,我解锁了视图。同时授权管理员解锁按钮点击视图