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